opencv中的video文件

我想阅读video文件(.avi或.mov)并使用Opencv检测运动和边缘。可以帮助我使用代码吗?我想创建一个GUI,我们可以在其中选择video文件,然后我们就可以进行图像处理了opencv中的函数?

如何阅读video文件

  • 读取video文件并在窗口中显示 (C API)
  • 读取video文件并在窗口中显示 (C ++ API)
  • 读取video文件,将其转换为灰度,然后在窗口中显示 (C API)

如何跟踪/检测动作

  • 具有跟踪function的Opencv Motion检测
  • 如何使用video对对象进行运动跟踪?
  • OpenCVvideo监控/ Blob跟踪器设施

如何检测边/计数

  • 使用cvCanny()
  • 使用cvCanny()cvFindContours()
  • 使用cvCornerHarris()

有关如何检测形状的更多信息,请查看此文章 。

这对我有用,我正在使用AVI文件。 使用文件名调用video,在主循环中获取下一帧并关闭,然后终止或更改为另一个video。

 IplImage *videoframe; int videoFps; CvCapture *videoCapture=NULL; int video(char *videoFile) { int key; /* load the AVI file */ videoCapture = cvCaptureFromAVI( videoFile ); /* always check */ if( !videoCapture ) return 0; /* get fps, needed to set the delay */ videoFps = ( int )cvGetCaptureProperty( videoCapture, CV_CAP_PROP_FPS ); /* display video */ cvNamedWindow( "video", 0 ); } void videoNext() { if ( ! videoCapture ) return; videoframe = cvQueryFrame( videoCapture ); if( !videoframe ) return; cvShowImage( "video", videoframe ); /* quit if user press 'q' */ int key = cvWaitKey( 1000 / videoFps ); } void videoShutdown() { /* free memory */ cvReleaseCapture( &videoCapture ); cvDestroyWindow( "video" ); return; } 

注意:Opencv不支持音频播放关于如何在opencv中使用ffmmpeg请参阅audio-output-with-video-processing-with-opencv

从video中读取帧的最短示例:

 cap = cv::VideoCapture("foo.avi"); frame = cv::Mat; cap >> frame; 

您应该查看opencv的python文件夹中包含的示例。 它们将在这里找到:opencv \ samples \ python2

在那里你会发现opencv的许多基本和高级function(以cv2格式)。 网站上还有很多教程(主要是用c ++编写): http : //opencv.itseez.com/doc/tutorials/tutorials.html

阅读和编写video图像如下: http : //opencv.itseez.com/trunk/modules/highgui/doc/reading_and_writing_images_and_video.html

对于AVI的初始video捕获:

 import cv2 import cv2.cv as cv import numpy as np cap = cv2.VideoCapture(filename) img = cv2.VideoCapture.read() if img: print img.get(cv.CV_CAP_PROP_FRAME_HEIGHT) print type(img) # loop through rest of frames reading one at a time