使用Python和OpenCV进行视频处理

3

我想使用Python和OpenCV捕获视频并将其转换为帧。我按照以下步骤在Windows 8中导入Python的OpenCV2库:

从官方网站下载Python,Numpy和OpenCV。

解压OpenCV(会解压到一个名为“opencv”的文件夹中)

复制..\ opencv \ build \ python \ x86 \ 2.7 \ cv2.pyd

粘贴到C:\ Python27 \ Lib \ site-packages中

打开Python IDLE或终端,然后键入

我已经完成了上述步骤以将OpenCV库导入Python。

但是,当我导入CV2库并尝试捕获视频时,我无法使用函数cv.CaptureFromFile()生成帧,并使用cv.QueryFrame()函数访问帧。我无法捕获帧。请查看下面的代码。

import sys
import os
import numpy as np
import PIL
from matplotlib import pyplot as plt
import cv2.cv as cv

winname = "myWindow"
win = cv.NamedWindow(winname, cv.CV_WINDOW_AUTOSIZE)

invideo = cv.CaptureFromFile("chayya1.avi")

totalNumberOfFrames = int(cv.GetCaptureProperty(invideo, cv.CV_CAP_PROP_FRAME_COUNT))
framesprocessing = totalNumberOfFrames
print(totalNumberOfFrames)
while (True):
    im = cv.QueryFrame(invideo)
    cv.ShowImage(winname, im)
    if cv.WaitKey() == 27: # ASCII 27 is the ESC key
        break
del invideo
cv.DestroyWindow(winname)

输出正在处理,没有出现任何错误,但是帧没有生成,甚至frame count的打印语句也是零。
我只想知道在Windows上安装Python的OpenCV和使用上述函数访问视频帧的过程。
提前致谢。

你尝试过更换不同的视频或摄像头吗?此外,你是否安装了当前版本的ffmpeg或gstreamer? - Fookatchu
我已经尝试使用网络摄像头并且它可以工作。但是当我将视频文件作为输入时,该函数无法捕获帧。 - user3366134
似乎无法解码您要解析的视频。建议尝试其他视频或安装/更新FFmpeg。 - Fookatchu
我已经通过多个视频进行了检查。请问您能否提供安装ffmpeg的过程? - user3366134
1个回答

1
使用opencv读取视频文件
此处教程中所述,现在推荐的方法是使用cv2(而不是您之前使用的cv)来读取视频文件,例如:
import numpy as np
import cv2

cap = cv2.VideoCapture("chayya1.avi")

while(cap.isOpened()):
    ret, frame = cap.read()

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

在Windows上安装Python和OpenCV

如果您想要在Windows上安装OpenCV的Python绑定的简单解决方案,可以尝试Python(xy) distribution,它捆绑了一堆Python模块,包括OpenCV

Python的OpenCV绑定包含在OpenCV中,所以如果您没有遇到任何导入错误,则您的OpenCV设置可能是正确的。

备选绑定

如果您不喜欢原生绑定,您可以尝试使用命令行中的pip来安装第三方绑定,但正如berak指出的那样,这通常不被推荐。

pip install pyopencv  

可以按照这个答案中的说明安装Pip本身。


1
等一下,PyOpenCV 不是 OpenCV 的原生 Python 封装,而是第三方的?(那将是一个非常糟糕的想法) - berak
感谢您的评论@berak,已相应更新帖子。 - jmetz
您也可以使用 pip install opencv-python 安装官方封装。 - Eran W
@EranW - 看起来好像没有提供“Python的非官方预构建OpenCV软件包”?这段话摘自opencv-python的pypi页面:https://pypi.org/project/opencv-python/ - jmetz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接