代码 #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; }
| ☜εїз:❉:εїз☞
Ari的Q群:17884905 Visual C++图像群:2122649 最新的文章
最后的评论
搜索我的 Blog
1 正在查看的用户
1 游客
0 会员 0 匿名会员 |