Blog文章的打印版本

点击此处查看原始版本

弱者道之用

Learning OpenCV:exercise4-1b

代码
#include "cv.h"
#include "highgui.h"
#include "stdio.h"


int main( int argc, char** argv ) {
    

    if (!argv[1])
    {
        printf("Need a file!\n");
        return -1;
    }
    IplImage *frame,*gray,*edge,*all; //To hold movie images
    CvCapture* capture         = NULL;
    if (!(capture=cvCreateFileCapture(argv[1])))
    {printf("Failed to open %s\n",argv[1]);
    return -1;
    }
    
    cvNamedWindow("Video",1);
    cvNamedWindow("Gray",1);
    cvNamedWindow("Edge",1);
    cvNamedWindow("All",1);
    int frame_width=int(cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH));
    int frame_height=int(cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT));
    CvSize frame_size=cvSize(frame_width,frame_height);
    gray = cvCreateImage(frame_size,
        IPL_DEPTH_8U,
        1);
    edge = cvCreateImage(frame_size,
        IPL_DEPTH_8U,
        1);
    all = cvCreateImage(cvSize(3*frame_width,frame_height),
        IPL_DEPTH_8U,
        1);    
    while (frame){
        
        frame=cvQueryFrame(capture);
        cvShowImage("Video",frame);
        cvCvtColor (frame,gray,CV_BGR2GRAY);
        cvShowImage("Gray",gray);
        cvCanny(gray,edge,50, 150, 3);//后面三个参数随意填的
        cvShowImage("Edge",edge);
        cvSetImageROI(all,cvRect(0,0,frame_width,frame_height));
        cvSetImageCOI(frame,1);//因为灰度和边缘检测图都是单通道的,所以只取了frame的一个通道来复制
        cvCopy(frame,all);
        cvSetImageCOI(frame,0);
        cvResetImageROI(all);
        cvSetImageROI(all,cvRect(frame_width,0,frame_width,frame_height));
        cvCopy(gray,all);
        cvResetImageROI(all);
        cvSetImageROI(all,cvRect(2*frame_width,0,frame_width,frame_height));
        cvCopy(edge,all);
        cvResetImageROI(all);
        cvShowImage("All",all);
        if( cvWaitKey( 15 )==27 ) break;
        
    }
    
    cvReleaseImage(&frame);
    cvReleaseImage(&gray);
    cvReleaseImage(&edge);
    cvReleaseImage(&all);
    return 0;
}

Powered by Invision Community Blog (http://www.invisionblog.com)
© Invision Power Services (http://www.invisionpower.com)