使用Python和OpenCV进行视频处理

时间:2014-02-28 18:46:43

标签: python opencv python-2.7 numpy

我正在尝试使用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)

输出处理没有任何错误,但帧没有生成,甚至帧计数的print语句也为零。

我只想了解在Windows中为python安装OpenCV以及使用上述功能访问视频帧的过程。

提前致谢

1 个答案:

答案 0 :(得分:1)

使用opencv阅读视频文件

正如教程here中所提到的,现在推荐的方法是使用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()

Python& Windows上的OpenCV安装

对于在Windows上安装OpenCV的python绑定的简单解决方案,您可能需要尝试捆绑一堆python模块Python(xy) distributionincluding opencv

Python的opencv绑定包含在opencv中,所以如果你没有得到任何导入错误,那么你的opencv设置可能是正确的。

替代绑定

如果您不喜欢本机绑定,可以尝试使用命令行中的pip来安装第三方绑定,但是berak指出这通常不建议使用;

pip install pyopencv  

可以按照this answer

中的说明安装Pip本身