Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和OpenCV进行视频处理_Python_Opencv_Python 2.7_Numpy - Fatal编程技术网

使用Python和OpenCV进行视频处理

使用Python和OpenCV进行视频处理,python,opencv,python-2.7,numpy,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包中 打开Python IDLE或terminal,然后键入 我已经完成了将opencv库导入python的上述

我正在尝试使用python和openCV捕获视频并将其转换为帧。我遵循了在windows 8中为python导入openCV2库所需的步骤,如下所示:

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

提取OpenCV(将被提取到OpenCV文件夹)

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

将其粘贴到C:\Python27\Lib\site包中

打开Python IDLE或terminal,然后键入

我已经完成了将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中安装OpenCV for python和使用上述函数访问视频帧的过程


提前感谢使用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模块的

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

替代绑定

如果您不喜欢本机绑定,您可以尝试从命令行使用
pip
来安装第三方绑定,尽管正如berak指出的那样,一般不建议这样做

pip install pyopencv  

Pip本身可以按照

中所述安装。您是否尝试过其他视频或网络摄像头?另外,您是否安装了最新版本的ffmpeg或gstreamer?我已经尝试使用网络摄像头,它正在工作。当我将视频文件作为输入时,函数没有捕获要解析的视频无法解码的帧。我会尝试另一个和/或安装/更新ffmpegI检查了多个视频这一点。请提供安装ffmpegwait的过程,pyopencv不是opencv的本地python包装,而是第三方的?(这将是一个非常糟糕的主意)感谢您的评论@berak,更新帖子。您还可以
pip安装opencv-python
,以获得官方许可wrapper@EranW-似乎不是…“针对Python的非官方预构建OpenCV包”?摘自opencv python的pypi页面: