有时我们要在一个窗口中显示多幅图像,以利于我们对比结果。
为了实现这个效果中,我们可以在一幅大图中把各幅图绘制上去,这其中关键是要知道各幅图绘制在大图中的哪个区域,我们可以利用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);
}
运行结果如下图所示: