Opencv中一个窗口显示两幅图

it2022-05-05  88

  最近在学习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型图片(任意张)

最新回复(0)