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;
}

結果如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM