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

时间:2014-02-05 23:23:36

标签: 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行,一切都正常这应该。该脚本仅在网站上运行时才会挂起...

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

我尝试使用cap.read()cap.grab()切换为img = cap.retrieve(),但之后只会挂在.retrieve()上。

1 个答案:

答案 0 :(得分:1)

通过从OpenCV 3.0.0降级到OpenCV 2.4.0解决。使用Python 2.7

运行时,任何高于2.4.0的问题都会出现此问题