无法使用opencv2打开视频
我正在尝试从一个视频文件中提取图片,但我无法打开这个文件,不知道为什么。
下面是一个代码示例,它打印出False
,而我期待得到True
。我不明白为什么我无法打开这个简单的视频文件,任何帮助都非常感谢!
我先尝试了相对路径,然后又换成了绝对路径,看看有没有变化,但结果还是一样……
video = cv2.VideoCapture()
path = "C:\\Users\\Leo\\Dropbox\\Projet VISORD\\TP3\\video.mpg"
print video.open(path)
3 个回答
2
我遇到过类似的问题。试着把
path = "C:\\Users\\Leo\\Dropbox\\Projet VISORD\\TP3\\video.mpg"
改成
path = "C:/Users/Leo/Dropbox/Projet VISORD/TP3/video.mpg"
看看这样是否有效。
2
下面的代码对我来说是有效的:
import cv2
加载视频文件:
capture = cv2.VideoCapture('videos/my_video.avi')
Frame是你想要的图像,flag表示成功或失败:
flag, frame = capture.read()
循环遍历视频的每一帧:
while True:
flag, frame = capture.read()
if flag == 0:
break
cv2.imshow("Video", frame)
key_pressed = cv2.waitKey(10) #Escape to exit
if key_pressed == 27:
break
不过,MPEG是一种压缩格式,这意味着你需要安装正确的解码器,并且可能还需要做一些额外的工作来处理转换。你可以在OpenCV视频编码文档中查看支持的不同视频格式。
(不过,如果你只是想要一个简单的示例,可以尝试使用.AVI文件,看看是否能正常工作。)
2
cv2支持的编码格式比较有限。你可以在下面的链接找到一些格式。我还没有尝试过所有的格式。
http://opencv.willowgarage.com/wiki/documentation/cpp/highgui/VideoWriter
我在使用mp42编码时运气还不错。不过,我需要把我相机拍的mp4(h264格式)转换成正确格式的avi。
现在我正在使用一个叫ffmpeg的工具。
命令是:ffmpeg -i input.mp4 -codec:v msmpeg4v2 output.avi
不过这样转换后效果还是不太理想,因为分辨率会下降,所以我自己还在寻找更好的解决办法。我刚开始接触这些。