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