3.</p><p>4.</p><p>5.</p><p>//實現攝像機視頻資料縮放顯示,同時存入磁碟,可以動態調節縮放比例。</p><p>#include "cv.h"<br />#include "highgui.h"<br />#include <stdio.h></p><p>int g_slider_position = 0;<br />IplImage* doPyrDown(IplImage* in,int filter = IPL_GAUSSIAN_5x5)<br />{</p><p>// Best to make sure input image is divisible by two.<br />//<br />assert( in->width%2 == 0 && in->height%2 == 0 );</p><p>IplImage* out = cvCreateImage(<br /> cvSize( in->width/2, in->height/2 ),<br /> in->depth,<br /> in->nChannels<br /> );<br />out->origin = 1;<br />cvPyrDown( in, out );<br />return( out );<br />};</p><p>main( int argc, char* argv[] )<br />{<br />cvNamedWindow( "Source", CV_WINDOW_AUTOSIZE );<br />cvNamedWindow( "Result", CV_WINDOW_AUTOSIZE );<br />CvCapture* capture = cvCreateCameraCapture( -1 );<br />if (!capture){<br /> return -1;<br />}<br />IplImage* pFrame;<br />IplImage* pyr_frame;</p><p>double fps = cvGetCaptureProperty (<br /> capture,<br /> CV_CAP_PROP_FPS<br /> );</p><p>CvSize size = cvSize(<br /> (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),<br /> (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT)<br /> );</p><p>CvVideoWriter* writer = cvCreateVideoWriter(<br /> "video.avi",<br /> CV_FOURCC('P','I','M','1'),<br /> fps,<br /> size<br /> );</p><p> cvCreateTrackbar(<br /> "Position",<br /> "Result",<br /> &g_slider_position,<br /> 8,<br /> NULL<br /> );</p><p>while(1)<br />{<br /> pFrame=cvQueryFrame(capture);<br /> pyr_frame = cvCreateImage(<br /> cvSize( pFrame->width/2, pFrame->height/2 ),<br /> pFrame->depth,<br /> pFrame->nChannels<br /> );</p><p> switch (g_slider_position)<br /> {<br /> case 2:<br /> pyr_frame = doPyrDown(pFrame);<br /> break;<br /> case 4:<br /> pyr_frame = doPyrDown(pFrame);<br /> pyr_frame = doPyrDown(pyr_frame);<br /> break;<br /> case 8:<br /> pyr_frame = doPyrDown(pFrame);<br /> pyr_frame = doPyrDown(pyr_frame);<br /> pyr_frame = doPyrDown(pyr_frame);<br /> break;<br /> default:<br /> pyr_frame = cvCloneImage(pFrame);;<br /> } </p><p> cvShowImage( "Source", pFrame );<br /> cvShowImage( "Result", pyr_frame );<br /> cvWriteToAVI( writer, pyr_frame );<br /> char c = cvWaitKey(10);<br /> if( c == 27 ) break;<br />}</p><p>cvReleaseVideoWriter( &writer );<br />cvReleaseImage( &pyr_frame );<br />cvReleaseCapture( &capture );<br />cvDestroyWindow("Source");<br />cvDestroyWindow("Result");<br />}<br />
OpenCV 1.0存視頻檔案有問題,2.0解決了這個問題。