python - 使用 Python 和 OpenCV 进行视频处理

标签 python opencv python-2.7 numpy

我正在尝试使用 python 和 openCV 捕获视频并转换为帧。我按照需要完成的步骤在 Windows 8 中为 python 导入 o​​penCV2 库,如下所示:

从官方网站下载 Python、Numpy、OpenCV。

解压OpenCV(会解压到opencv文件夹)

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

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

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

我已经完成上述步骤将opencv库导入python。

但是当我导入 CV2 库并 try catch 视频时,我无法使用函数 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)

输出正在得到处理,没有任何错误,但没有生成帧,甚至帧计数的打印语句也为零。

我只想知道在 Windows 中为 python 安装 OpenCV 并使用上述功能访问视频帧的过程是什么。

提前致谢

最佳答案

使用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()

Windows 上的 Python 和 OpenCV 安装

对于在 Windows 上安装 OpenCV 的 python 绑定(bind)的简单解决方案,您可能想尝试 Python(xy) distribution它捆绑了一堆 python 模块 including opencv .

Python 的 opencv 绑定(bind)包含在 opencv 中,因此如果您没有遇到任何导入错误,那么您的 opencv 设置很可能是正确的。

替代绑定(bind)

如果您不喜欢 native 绑定(bind),您可以尝试从命令行使用 pip 来安装第 3 方绑定(bind),但正如 berak 指出的那样,通常不推荐这样做;

pip install pyopencv  

Pip 本身可以按照 this answer 中的概述进行安装

关于python - 使用 Python 和 OpenCV 进行视频处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103386/

相关文章:

python - 指向python中指针的指针

Python 视频缩略图,但具有易于获得的库(没有 PyMedia!)

javascript - 构建 OpenCV.js 失败。 CMake 找不到已安装的编译器?

python - 如何使用公共(public)键对来自三个不同数据帧的列求和

python - 在 Python 2 和 3 中分块字节(不是字符串)

javascript - 是否可以在 Javascript 中使用 OpenCV 或类似的库?

python - 使用 azure face api 进行实时人脸检测时的性能问题

python - 如何使用 tweepy 获取关注者数量

python和python2.7运行不同的python实例

python - 属性错误 : 'module' object has no attribute 'computation'