现在的位置: 首页 > 综合 > 正文

学习Opencv第4章课后习题

2018年01月14日 ⁄ 综合 ⁄ 共 1874字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.