2014-02-28 90 views
2

我想捕捉一个视频并使用python和openCV转换为帧。我遵循的步骤,需要做的导入openCV2库的Python在Windows 8如下:视频处理使用Python和OpenCV

从他们的官方网站下载Python,Numpy,OpenCV。

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

复印.. \的OpenCV \建立\蟒\ 86 \ 2.7 \ cv2.pyd

在C粘贴它:\ Python27 \ LIB \站点包

打开Python的空闲或终端,和类型

我已经完成了上述步骤导入的OpenCV库到蟒蛇。

但是,当我导入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并使用obove提到的函数访问视频帧的过程。

在此先感谢

+0

您是否尝试过不同的视频或网络摄像头概述?另外,您是否安装了当前版本的ffmpeg或gstreamer? – Fookatchu

+0

我已经尝试使用摄像头,它正在工作。当我将视频文件作为输入时,该功能不捕获帧 – user3366134

+0

似乎您要解析的视频无法解码。我会尝试不同的和/或安装/更新ffmpeg – Fookatchu

回答

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 & OpenCV的安装在Windows

对于一个简单的解决方案,你可能会想尝试它捆绑了一堆Python模块including opencvPython(xy) distribution窗户安装的OpenCV的Python绑定。

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

替代绑定

如果你不喜欢原生绑定,你可以尝试使用pip命令行安装第三方绑定,但正如berak指出,这不是一般建议;

pip install pyopencv 

皮普本身可以安装在this answer

+1

等待的过程,pyopencv不是opencv的本地python包装,而是第三方包装? (这将是一个非常糟糕的主意) – berak

+0

感谢您的评论@berak,相应地更新了文章 – jmetz