欢迎你客人 ( 登录 | 注册 )

  评价 XXXX

entry 2008-12-20, 22:32 PM
代码
#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);
    //用来显示文字,初始化字体
    CvFont font;
cvInitFont( &font, CV_FONT_HERSHEY_SCRIPT_SIMPLEX,1, 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));
        cvPutText(gray,"Gray",cvPoint(25,25),&font,cvScalar(55,55,55));
        cvCopy(gray,all);
        cvResetImageROI(all);
        cvSetImageROI(all,cvRect(2*frame_width,0,frame_width,frame_height));
        cvPutText(edge,"Edge",cvPoint(25,25),&font,cvScalar(155,155,155));
        cvCopy(edge,all);
        cvResetImageROI(all);
        cvPutText(all,"Frame",cvPoint(25,25),&font,cvScalar(55,55,55));
        cvShowImage("All",all);
    
        if( cvWaitKey( 15 )==27 ) break;
        
    }
    
    cvReleaseImage(&frame);
    cvReleaseImage(&gray);
    cvReleaseImage(&edge);
    cvReleaseImage(&all);
    return 0;
}

  Fast Reply Reply to this topic

« 前一篇文章 · 弱者道之用 · 后一篇文章 »
 
☜εїз:❉:εїз☞
Ari的Q群:17884905

Visual C++图像群:2122649




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31



搜索我的 Blog


1 正在查看的用户
1 游客
0 会员
0 匿名会员

About Here
有事点这里

我的 Blog 链接

随机图片
tn_gallery_133349_2913_18447.jpeg