OpenCV中一個窗口顯示兩幅圖像

最近在學習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;
}

結果如圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章