【发布时间】:2019-03-02 04:05:22
【问题描述】:
类似于OpenCV 2.4 VideoCapture not working on Windows
结果是一个带有灰色图像的窗口大约 2 秒后关闭并显示“视频结束”
import cv2
import imutils
vidPath = "filename.mp4"
video = cv2.VideoCapture(vidPath)
index = 0;
while True:
print (index)
index += 1
ret, frame = video.read()
if ret == False:
print("End of video")
break
frame = imutils.resize(frame, width = 500)
cv2.imshow("Video", frame)
video.release()
cv2.destroyAllWindows()
'ret' 在索引打印达到大约 900 后总是返回 false,窗口上根本没有任何有用的显示。有问题的视频大约有 2 分钟长。
Windows 10、Python 3.5 版、OpenCV 3.4.3 版(contrib)安装方式
pip install opencv-contrib-python
我检查了 cv2.getBuildInformation(),FFMpeg 是 YES(预编译的二进制文件)
我已将 opencv_ffmpeg313.dll 复制到 python (user/AppData/Local/Programs/Python/Python35-32/Scripts) and (user/AppData/Local/Programs/Python/Python35-32) 的路径
我还复制了它们,称为 opencv_ffmpeg313_64.dll 以防万一
我还尝试了几个不同的视频,多个 .mp4、.avi 等。 我已经用尽了我为这个问题找到的所有修复方法,但仍然想出来。
【问题讨论】:
-
会不会是文件路径?尝试使用绝对文件路径(不要忘记转义反斜杠),例如
C:\\test\\filename.mp4。还可以尝试检查 video.isOpened() 以查看它是否真的能够打开文件(并且能够播放) -
我已经改成绝对文件路径,video.isOpened()返回True, no dice
-
很遗憾,我没有网络摄像头。我假设索引打印出来意味着它在打印“视频结束”之前读取了大约 900 帧,但它只是在窗口上显示为灰色虚无。另外,我收到了错误
AttributeError: module 'cv2.cv2' has no attribute 'CV_CAP_PROP_FRAME_COUNT' -
是的,我删除了评论,因为我错过了您问题中的一些细节,请稍等,我正在写答案
-
啊,看来我错过了重要的一步。我需要使用 cv2.waitkey(30) 来减慢播放速度,使其真正可见