利用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做分屏显示】
推荐阅读
- 我要做大厨
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 我从来不做坏事
- 子龙老师语录
- 做一件事情的基本原理是什么()
- 做个俗物有什么不好
- 28岁|28岁,做一个通透又自由的姑娘。
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 良心