用 OpenCV 读取视频的指定帧序号视频片断
文章目录
用 OpenCV 来读取视频,经常需要从指定帧序号的片断开始读取,这个时候,就需要用 cvSetCaptureProperty 结合参数 CV_CAP_PROP_POS_FRAMES 来设定,例子代码如下:
bool PickSomeFrames(const char* filename, int start, int end, char* savePath) { CvCapture* capture = cvCaptureFromAVI(filename); //读取视频文件 cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, start); int count = start; while( cvGrabFrame(capture) && count <= end ) { IplImage* pFrame = cvRetrieveFrame(capture);// 获取当前帧 char test[100]; sprintf(test,"%s\\%d%s",savePath,count,".jpg"); cvSaveImage(test,pFrame); count++; } cvReleaseCapture(&capture); return false; }
以上这种方法,支持用多线程的方式,来同时读写视频不同帧序号开始的片断。以上这些代码,在采用多线程来加速视频处理时,特别有用。
文章作者 cookwhy
上次更新 2011-07-09