最近在学习OpenCV,觉得OpenCV很好用,一般情况下,只用一个窗口显示一幅图像,假如想要一个窗口显示两幅图像或者多幅图像呢,怎么办?最近做了一个实验.
//思想:最简单的方法就是将两幅图合并为一幅图 然后再显示//具体操作:可以先开辟一个大的图像空间(大小是所有小图的和),然后根据你要显示的图像大小和位置分别设置ROI,把小图copy进去。//最后释放ROI把大图显示出来
程序代码:
#include "stdafx.h"#include "cv.h"#include "highgui.h"int main(int argc, char* argv[]){ IplImage *img1,*img2,*dst1,*dst2,*dst_big; //img1 img2 原图 dst1、dst2放缩后的图 dst_big 大图 CvRect rect1=cvRect(0,0,300,300); //两个ROI区域 CvRect rect2=cvRect(300,0,300,300); img1=cvLoadImage("ff.jpg"); img2=cvLoadImage("Lena.jpg"); dst1=cvCreateImage(cvSize(300,300),img1->depth,3); dst2=cvCreateImage(cvSize(300,300),img2->depth,3); dst_big=cvCreateImage(cvSize(600,300),img2->depth,3); cvResize(img1,dst1); //放缩 cvResize(img2,dst2); cvSetImageROI(dst_big,rect1); //设置ROI cvCopy(dst1,dst_big); cvSetImageROI(dst_big,rect2); cvCopy(dst2,dst_big); cvResetImageROI(dst_big); //释放ROI cvNamedWindow("Display"); cvShowImage("Display",dst_big); //显示合并后的大图 cvWaitKey(); cvReleaseImage(&img1); //释放图像空间 cvReleaseImage(&img2); cvReleaseImage(&dst1); cvReleaseImage(&dst2); cvReleaseImage(&dst_big); return 0;}
结果如图:
转载于:https://www.cnblogs.com/freecloudinsky/archive/2013/04/05/3001158.html
相关资源:OpenCV3实现一个窗口中显示多张Mat型图片(任意张)