1. 程式人生 > >0011-OpenCV單視窗顯示多幅影象的程式碼

0011-OpenCV單視窗顯示多幅影象的程式碼

有時我們要在一個視窗中顯示多幅影象,以利於我們對比結果。
為了實現這個效果中,我們可以在一幅大圖中把各幅圖繪製上去,這其中關鍵是要知道各幅圖繪製在大圖中的哪個區域,我們可以利用Mat類對操作符“()”的過載之一,來標定區域,過載操作的函式原型如下:
C++: Mat::operator()(const Rect& roi) const
具體怎麼使用,大家看程式碼便知,如果程式碼看著比較吃力,建議大家實際舉一個例子便清楚各行程式碼的含義了。
具體的程式碼如下
程式碼中用到的影象下載連結:http://pan.baidu.com/s/1bpztyUF 密碼:ls61

//opencv版本:OpenCV3.0
//VS版本:VS2013
//Author:qxsf321.net

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>    
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>

using namespace cv;
using namespace std;


/*******************同時顯示多張圖片*************************
*_winName 為顯示視窗的名字字串;
*_img 為要顯示的圖片的集合;
*最多同時顯示12張圖片
*************************************************************/
void imshowMulti(const std::string& _winName, const std::vector<Mat>& _imgs)
{
//函式imshowMulti的完整程式碼可以搜尋公眾號"qxsf321",關注後回覆0011即可獲取
//函式imshowMulti的完整程式碼可以搜尋公眾號"qxsf321",關注後回覆0011即可獲取
//函式imshowMulti的完整程式碼可以搜尋公眾號"qxsf321",關注後回覆0011即可獲取
        
}

void main()
{
        vector<Mat> img;
        Mat img1 = imread("hua1.jpg");
        Mat img2 = imread("hua2.jpg");
        Mat img3 = imread("hua3.jpg");
        img.push_back(img1);
        img.push_back(img2);
        img.push_back(img3);

        imshowMulti("result", img);

        waitKey(0);

}


執行結果如下圖所示