我正在尝试使用 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 库并 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/