无法使用opencv2打开视频

1 投票
3 回答
13386 浏览
提问于 2025-04-17 19:21

我正在尝试从一个视频文件中提取图片,但我无法打开这个文件,不知道为什么。

下面是一个代码示例,它打印出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

不过这样转换后效果还是不太理想,因为分辨率会下降,所以我自己还在寻找更好的解决办法。我刚开始接触这些。

撰写回答