利用opencv做分屏显示


学opencv时间不长,但又比较喜欢玩,看以前电视上会有那种一个屏幕上显示多幅图像的玩意,感觉很好玩,比较好奇,自己利用opencv做了一个简单的分屏显示的小程序
其实很简单,就是对数据结构进行的操作,说到底就是对指针的操作,利用cvGetCols函数分别将两幅图像的数据分别放到自己创建的一个CvMat数据矩阵中,这样就可以在一个窗口中将两幅图像le

下面是具体的程序实现,程序很简单,对于高手来说可能比较幼稚,千万别喷我啊

CvCapture *capture1 = 0; CvCapture *capture2 = 0; IplImage*image1 = 0; IplImage*image2 = 0; CvMat *M_image1; CvMat *M_image2; CvMat part; cvNamedWindow("woaini,haiyingyang" , 1); for(; ; ) { capture1 = cvCaptureFromCAM(0); if(!capture1) printf("capture1 failed/n"); capture2 = cvCaptureFromCAM(1); if(!capture2) printf("capture2 failed/n"); image1 = cvQueryFrame(capture1); if(!image1) printf("query image1 failed/n"); image2 = cvQueryFrame(capture2); if(!image2) printf("query image2 failed/n"); M_image1 = cvCreateMat(image1->height, image1->width, CV_8UC3); M_image2 = cvCreateMat(image1->height, image1->width, CV_8UC3); cvConvert(image1 , M_image1); cvConvert(image2 , M_image2); CvMat *pair = cvCreateMat(image1->height , image1->width*2 , CV_8UC3); cvGetCols(pair , &part , 0 , image1->width); cvCopy(M_image1 , &part); cvGetCols(pair , &part , image1->width , image1->width*2); cvCopy(M_image2 , &part); cvShowImage("woaini,haiyingyang" , pair); if(cvWaitKey(10) >=0) break; } cvDestroyWindow("woaini,haiyingyang"); cvReleaseCapture(&capture1); cvReleaseCapture(&capture2); cvReleaseImage(&image1); cvReleaseImage(&image2); return 0;



效果图:

【利用opencv做分屏显示】

    推荐阅读