基于OpenCV3实现一个窗口显示若干张图片
来源:互联网 发布:流量君软件下载 编辑:程序博客网 时间:2024/05/04 00:15
前段时间一直在找如何在一个窗口中显示多张图片的方法,发现网上都是很陈旧的基于OpenCV1全是IplImage*的格式,转换为Mat麻烦,关键是还不能好好用。所以自己这些天琢磨了一段代码出来,完美适用Mat型图片。
下面贴代码:
using namespace std; using namespace cv; /*使用容器vector和ROI方法完成一个窗口显示多张图片 Images是vector<Mat>,可有push_back方法往里面加若干图片 dst为输出图像,即将所有图片放在一张图片中 imgRows是每行显示几张图片,比如你显示4张图片填2则显示2*2,显示9张填3显示3*3,可以自由选择 示例代码: Mat img_1 = imread("1.jpg"); Mat img_2 = imread("2.jpg"); Mat img_3 = imread("3.jpg"); Mat img_4 = imread("4.jpg"); Mat dst; vector<Mat> manyimgV; manyimgV.push_back(img_1); manyimgV.push_back(img_2); manyimgV.push_back(img_3); manyimgV.push_back(img_4); ManyImages(manyimgV, dst,2); imshow("ManyImagesInWindow", dst); waitKey(0); 备注:运行速度:约960ms,95%时间用在resize上 */ void ManyImages(vector<Mat> Images, Mat& dst, int imgRows) { int Num = Images.size();//得到Vector容器中图片个数 //设定包含这些图片的窗口大小,这里都是BGR3通道,如果做灰度单通道,稍微改一下下面这行代码就可以 Mat Window(300 * ((Num - 1) / imgRows + 1), 300 * imgRows, CV_8UC3, Scalar(0, 0, 0)); Mat Std_Image;//存放标准大小的图片 Mat imageROI;//图片放置区域 Size Std_Size = Size(300, 300);//每个图片显示大小300*300 int x_Begin = 0; int y_Begin = 0; for (int i = 0; i < Num; i++) { x_Begin = (i % imgRows)*Std_Size.width;//每张图片起始坐标 y_Begin = (i / imgRows)*Std_Size.height; resize(Images[i], Std_Image, Std_Size, 0, 0, INTER_LINEAR);//将图像设为标准大小 //将其贴在Window上 imageROI = Window(Rect(x_Begin, y_Begin, Std_Size.width, Std_Size.height)); Std_Image.copyTo(imageROI); } dst = Window; }
包含的头文件有opencv2\opencv.hpp(这个是OpencCV3里面新加的功能,包含这一个头文件就够了),注意使用vector容器一定要加vector这个头文件,否则报错。
显示结果如下:
第一次写博客,写得可能不详细,还请多多包涵!
2 0
- 基于OpenCV3实现一个窗口显示若干张图片
- OpenCV3 一个窗口显示多个图片的实现函数
- opencv3自定义窗口内显示多张图片
- OpenCV一个窗口显示多张图片
- OpenCV一个窗口显示多张图片
- OpenCV一个窗口显示多张图片
- 如何利用opencv在一个窗口显示多张图片
- 在一个窗口中显示两张图片
- opencv在一个窗口里面显示多张图片
- 在一个窗口中显示多张图片
- MATLAB 如何循环显示多张图片在一个窗口
- OpenCV同一窗口显示多张图片实现
- opencv一个窗口显示多张图像
- opencv3.0中一个窗口显示多个图像
- 《OpenCV》Part3 OpenCV3.1.0一幅图中同时显示三张图片(效果对比)
- 显示多张图片
- 一个窗口显示多幅图片
- opencv2 一个窗口显示多幅图片
- Android Camera 系统架构源码分析(3)---->Camera的显示流程
- LintCode : Maximal Square
- iOS Provisioning Profile(Certificate)与Code Signing详解
- 程序员-5个原因说出你的伟大
- 第八周项目3——顺序串算法(1)
- 基于OpenCV3实现一个窗口显示若干张图片
- c++学习笔记(十三):纯虚函数和抽象类
- 第7周项目6--停车场模拟
- 项目 - 猴子选大王(数组版)
- 项目2 - 压缩存储的对称矩阵的运算
- C++primer学习:重载运算(2)
- 图像处理与计算机视觉基础,经典以及最近发展
- 第九周项目二~~~矩阵运算
- Android Camera 系统架构源码分析(4)---->Camera的数据来源及Camera的管理