我有一段简单的代码,用Python(2.7.11版)编写,旨在为视频文件做一些事情,如下所示:
import cv2
cap = cv2.VideoCapture('MyVideo.mov')
print(cap)
print(cap.isOpened())
while(cap.isOpened()):
#Do some stuff
打印(上限)的结果是一个8位十六进制数字,所以我不知道这是否意味着已找到视频。
但是,cap.isOpened()的print语句返回False。我尝试了几个修复,但没有一个工作。任何帮助或见解都会非常有帮助。
需要注意的事项/我尝试过的事情
C:\Users\MyName\OpenCV3\opencv\build\x64\vc14\bin;
C:\Users\MyName\OpenCV3\opencv\sources\3rdparty\ffmpeg;
C:\Python27\;
C:\Python27\Scripts
如果您使用的是Windows,则很可能是在\Users
或其他\<something>
目录中。 \
被python解释器视为unicode逃脱,随后的任何内容都可能是无效的逃脱。尝试键入r'<file path>'
以使路径被读取为原始文本并忽略unicode转义。
尝试添加:
if(not cap.isOpened()):
cap.open(r'<file_path>')
如果问题是文件路径,则可能会导致错误。或者,您可以使用这样的循环:
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
#if frame can't be read
if ret==False:
print('end of input or incompatible video file')
break
cv2.imshow('frame',frame)
#if esc key pressed
if cv2.waitKey(1) & 0xFF == 27:
break
cv2.destroyAllWindows()
cap.release()
由于您的代码在Mac上没有显示任何问题,请尝试在Windows系统上使用其他文件扩展名(例如mp4或wmv)进行测试。如果您的视频已加载,那意味着OpenCV已在Windows上正确配置,但显然没有驱动程序可以播放.mov文件
试着用这个:
cam=cv2.VideoCapture('MyVideo.mov')
while(True):
ret, img = cam.read()
print ("frame", img)
if cv2.waitKey(100) & 0xFF == ord('q'):
break
cam.release()
cv2.destroyAllWindows()