0011-OpenCV單視窗顯示多幅影象的程式碼
阿新 • • 發佈:2018-11-14
有時我們要在一個視窗中顯示多幅影象,以利於我們對比結果。
為了實現這個效果中,我們可以在一幅大圖中把各幅圖繪製上去,這其中關鍵是要知道各幅圖繪製在大圖中的哪個區域,我們可以利用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); }
執行結果如下圖所示: