学习Opencv第2章课后习题

3.  

4.  

5.  

//实现摄像机视频数据缩放显示,同时存入磁盘,可以动态的调节缩放比例。  

#include "cv.h"  
#include "highgui.h"  
#include <stdio.h>  

int        g_slider_position = 0;  
IplImage* doPyrDown(IplImage* in,int filter = IPL_GAUSSIAN_5x5)  
{  

// Best to make sure input image is divisible by two.  
//  
assert( in->width%2 == 0 && in->height%2 == 0 );  

IplImage* out = cvCreateImage(   
   cvSize( in->width/2, in->height/2 ),  
   in->depth,  
   in->nChannels  
   );  
out->origin = 1;  
cvPyrDown( in, out );  
return( out );  
};  

main( int argc, char* argv[] )   
{  
cvNamedWindow( "Source", CV_WINDOW_AUTOSIZE );  
cvNamedWindow( "Result", CV_WINDOW_AUTOSIZE );  
CvCapture* capture = cvCreateCameraCapture( -1 );  
if (!capture){  
   return -1;  
}  
IplImage* pFrame;  
IplImage* pyr_frame;  

double fps = cvGetCaptureProperty (  
   capture,  
   CV_CAP_PROP_FPS  
   );  

CvSize size = cvSize(  
   (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),  
   (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT)  
   );  

CvVideoWriter* writer = cvCreateVideoWriter(   
   "video.avi",                                 
   CV_FOURCC('P','I','M','1'),      
   fps,  
   size  
   );  

   cvCreateTrackbar(  
    "Position",  
    "Result",  
    &g_slider_position,  
    8,  
    NULL  
    );  


while(1)   
{  
   pFrame=cvQueryFrame(capture);  
   pyr_frame = cvCreateImage(   
    cvSize( pFrame->width/2, pFrame->height/2 ),  
    pFrame->depth,  
    pFrame->nChannels  
    );  

   switch (g_slider_position)  
   {  
   case 2:  
    pyr_frame = doPyrDown(pFrame);  
    break;  
        case 4:  
    pyr_frame = doPyrDown(pFrame);  
    pyr_frame = doPyrDown(pyr_frame);  
    break;  
   case 8:  
    pyr_frame = doPyrDown(pFrame);  
    pyr_frame = doPyrDown(pyr_frame);  
    pyr_frame = doPyrDown(pyr_frame);  
    break;  
     default:  
    pyr_frame = cvCloneImage(pFrame);;  
   }    
    
   cvShowImage( "Source", pFrame );  
   cvShowImage( "Result", pyr_frame );  
   cvWriteToAVI( writer, pyr_frame );  
   char c = cvWaitKey(10);  
   if( c == 27 ) break;  
}  

cvReleaseVideoWriter( &writer );  
cvReleaseImage( &pyr_frame );  
cvReleaseCapture( &capture );  
cvDestroyWindow("Source");  
cvDestroyWindow("Result");  
}

OpenCV 1.0存视频文件有问题,2.0解决了这个问题。


转载于:http://hi.baidu.com/loop_k/blog/item/2fbe26264c4c1b388644f973.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值