学习Opencv第4章课后习题

1.

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

void main( int argc, char** argv )
{
CvCapture* capture;
IplImage* frame;
IplImage* pImg = NULL;
IplImage* pGray = NULL;
IplImage* sGray = NULL;
IplImage* pEdge = NULL;
IplImage* sEdge = NULL;
IplImage* cEdge = NULL;
capture = cvCreateCameraCapture( 0 );

cvNamedWindow("video",CV_WINDOW_AUTOSIZE );

while (1)
{
   frame = cvQueryFrame( capture );
   if (!frame) break;

   //解决图像颠倒的问题
   cvFlip(frame,NULL,0);

   pImg = cvCreateImage(   
    cvSize( frame->width/2, frame->height/2 ),  
    frame->depth,  
    frame->nChannels  
    );  
   pImg->origin = 1;  
   cvPyrDown( frame, pImg );


   pGray = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,1);
   pEdge = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,1);
   cEdge = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);
   sGray = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);
   sEdge = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);

   cvCvtColor(pImg,pGray,CV_RGB2GRAY);

   cvSmooth( pGray, pEdge, CV_BLUR, 3, 3, 0, 0 );
   cvNot( pGray, pEdge );

   //canny边缘检测
   cvCanny(pGray, pEdge, 50, 150, 3);

   cvZero( cEdge );
   // copy edge points
   cvCopy( pImg, cEdge, pEdge );


   IplImage* image = cvCreateImage(
    cvSize(3*pImg->width,pImg->height),
    IPL_DEPTH_8U,
    3
    );
   cvZero( image );

   cvConvertImage(pGray,sGray);
   cvConvertImage(pEdge,sEdge);

 

   cvSetImageROI(image, cvRect(0, 0, pImg->width, pImg->height));
   cvCopy(pImg,image);
   cvResetImageROI(image);

   cvSetImageROI(image, cvRect(pImg->width, 0, pImg->width, pImg->height));
   cvCopy(sEdge,image);
   cvResetImageROI(image);

    cvSetImageROI(image, cvRect(2*pImg->width, 0, pImg->width, pImg->height));
    cvCopy(cEdge,image);
    cvResetImageROI(image);


        cvShowImage( "video", image );
   if( cvWaitKey(10) == 27 ) break;

}

cvReleaseCapture( &capture );
cvReleaseImage( &pImg );
cvReleaseImage( &pGray );
cvReleaseImage( &pEdge );
cvReleaseImage( &cEdge );
cvReleaseImage( &sEdge );
cvReleaseImage( &sGray );
cvDestroyWindow("video");

}


 

转载自:http://hi.baidu.com/loop_k/blog/item/365697121d5cd2f7c2ce795d.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值