python - 奇怪的 OpenCV .read() 挂起没有错误

标签 python django opencv

我有一个允许用户上传视频的网站。在此过程中,有一个脚本会自动创建缩略图。这是我用来完成此操作的代码:

f = request.FILES['video']
f_temp = open('/path/to/video/dir/' + f.name, 'wb+')
for chunk in f.chunks():
    f_temp.write(chunk)
    f_temp.close()
cap = cv2.VideoCapture('/path/to/video/dir/' + f.name)
nothing, img = cap.read()
cv2.imwrite('/path/to/thumbnail/dir/' + f.name.split('.')[0] + '.png', img)

目前视频保存正常。但是,在创建缩略图时,脚本会在 cap.read() 处挂起,并且不会引发错误。

现在这是奇怪的部分 - 如果我删除最后 3 行,那么它所做的只是上传视频而不创建缩略图,我可以通过 SSH 连接到服务器并直接运行最后 3 行,一切都完全正常它应该。该脚本仅在网站上实时运行时挂起...

我不知道为什么只有在通过网络请求调用代码时才会发生这种情况。

我尝试使用 img = cap.retrieve()cap.read() 切换为 cap.grab(),但随后它只是卡在 .retrieve() 上。

最佳答案

通过从 OpenCV 3.0.0 降级到 OpenCV 2.4.0 解决。任何高于 2.4.0 的版本在使用 Python 2.7 运行时都会出现此问题

关于python - 奇怪的 OpenCV .read() 挂起没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21590801/

相关文章:

python - 是否可以强制 float 的指数或尾数匹配另一个 float (Python)?

django - 可以使用spotify API让每个人都听一首歌吗?

python - 类型错误 : view must be a callable or a list/tuple when including another urls. py

matlab - 提取图像中特定线条或线段的一般方法

python - 展平嵌套数组,但也在 python 中附加来自另一个数组的信息

python - 为什么 Python 有 `reversed` ?

python - 导入错误 - 没有语言本地化支持 'eng'

python - urls.py 中的 Django EOL

c++ - 为什么用 Eigen 和 OpenCV 计算的 SVD 左奇异 vector 有不同的符号

opencv - 如何查看 OpenCV 构建信息