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

}


运行结果如下图所示


 

猜你喜欢

转载自blog.csdn.net/lehuoziyuan/article/details/84063716