1. 程式人生 > >opencv採集視訊/攝像頭資料並儲存

opencv採集視訊/攝像頭資料並儲存

純粹是自娛自樂,並沒有對opencv的使用進行深入的學習,用opencv開啟視訊檔案或者開啟攝像頭採集,然後儲存,這也是最基礎的東西。

一、安裝配置環境                                                                                

          VS2008下安裝配置opencv,2005、2010的步驟應該差不多的,這裡提供網址,沒有比這個更詳細的了http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.3.1

二、程式程式碼                                                                                       

        opencv的學習,推薦《opencv教程——基礎篇》,其中第三章有對視訊的詳細講解,下面貼出程式碼:

#include "stdafx.h"

#include "cv.h" 
#include "highgui.h" 

int main( int argc, char** argv ) 
{ 
	CvCapture* capture = 0; 
	IplImage* frame = 0; 

	capture = cvCaptureFromAVI("video.avi");
	//capture = cvCaptureFromCAM( 0 ); //使用攝像頭 就換成這句

	double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS); //視訊幀率 
	//int fps=25; //捕捉幀率 ,影響生產的檔案的播放速度
	
	frame = cvQueryFrame( capture ); //先捕獲一幀

	CvVideoWriter* writer = 0; //儲存就加上這句
	int isColol=1; 
	//int frameW=640; 
	//int frameH=480; 
	writer=cvCreateVideoWriter("out.avi",CV_FOURCC('F','L','V','1'),fps,cvSize(frame->width,frame->height),isColol);//這裡大小隨便設好像不行

	//cvNamedWindow( "視窗", 1 ); 

	//for(int i=0;i<50;i++) //2秒
	for(;;) //一直讀
	{ 
		frame = cvQueryFrame( capture ); 

		cvWriteFrame(writer,frame ); 

		cvShowImage( "視窗", frame ); //顯示一幀影象
		cvWaitKey(1000 / fps);//視訊速度 
	} 

	cvReleaseVideoWriter(&writer); 
	cvReleaseImage(&frame); 
	cvReleaseCapture( &capture ); 
	cvDestroyWindow("視窗"); 
	return 0; 
}