opencv——同一窗口显示多幅图像
来源:互联网 发布:知乎 金钱 编辑:程序博客网 时间:2024/05/22 01:25
#include<iostream>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>using namespace cv;using namespace std;void imshowMany(const string winName, const vector<Mat>imgs);//定义一个函数用于多图像显示int main(){ vector<Mat> imgs(3);//相当于matlab中的subplot imgs[0] = imread("1.jpg"); Mat gray; cvtColor(imgs[0],gray, CV_RGB2GRAY); //namedWindow("gray", WINDOW_NORMAL);//用户可以改变窗口的大小 imshow("gray", gray); imwrite("3.jpg", gray, vector<int>());//写入图像 imgs[1] = imread("3.jpg"); Mat hsv; cvtColor(imgs[0], hsv, CV_RGB2HSV); imwrite("4.jpg", hsv, vector<int>());//写入图像 imgs[2] = imread("4.jpg"); //imgs[1] = imread("2.jpg"); //imgs[2] = imread("F:\\SA.jpg"); //imgs[3] = imread("F:\\SA.jpg"); imshowMany("Multiple Images", imgs);//调用函数 waitKey(0); return 0;}void imshowMany(const string winName, const vector<Mat>imgs){ int nImg = (int)imgs.size();//imgs个数 Mat dispImg; int size; int x, y; int w, h;//每行最多显示w张图片,每列最多显示h张图片 float scale;// scale - How much we have to resize the image int max; if (nImg <= 0) { printf("Number of arguments too small....\n"); return; } else if (nImg > 12) { printf("Number of arguments too large....\n"); return; } //最多显示12副图 else if (nImg == 1) { w = h = 1; size = 300; }//一行一列 else if (nImg == 2) { w = 2; h = 1; size = 300; }//一行两列 else if (nImg == 3 || nImg == 4) { w = 2; h = 2; size = 300; }//两行两列 else if (nImg == 5 || nImg == 6) { w = 3; h = 2; size = 200; }//两行三列 else if (nImg == 7 || nImg == 8) { w = 4; h = 2; size = 200; }//两行四列 else { w = 4; h = 3; size = 150; }//三行四列 dispImg.create(Size(80+size*w, 60+size*h), CV_8UC3);//创建一个新的三通道的窗口 for (int i = 0, m = 20, n = 20; i<nImg; i++, m += (20 + size))//m,n为坐标点,20为每幅图间距 { x = imgs[i].cols; y = imgs[i].rows; max = (x > y) ? x : y; scale = (float)((float)max / size);//获取第i幅图像与规定size的比例 if (i%w == 0 && m != 20) { m = 20; n += 20 + size; } Mat imgROI = dispImg(Rect(m, n, (int)(x / scale), (int)(y / scale)));//选取感兴趣区域 resize(imgs[i], imgROI, Size((int)(x / scale), (int)(y / scale)));//图像缩放 } //namedWindow(winName); imshow(winName, dispImg);}
阅读全文
0 0
- opencv——同一窗口显示多幅图像
- opencv——同一窗口显示同色彩图像
- OpenCV学习笔记(五十七)——在同一窗口显示多幅图片
- OpenCV学习笔记(五十七)——在同一窗口显示多幅图片
- Opencv将两幅或多幅IplImage图像同时并行显示在同一副图像上——程序
- OpenCV 在同一窗口显示多幅图片
- opencv一个窗口显示多幅图像
- opencv单个窗口显示多幅图像
- 利用opencv将两张图像在同一窗口上显示,并在图片上显示文字
- OpenCV单窗口显示多幅图像的代码
- OpenCV同一窗口显示多张图片实现
- opencv一个窗口显示多张图像
- opencv—显示图像
- OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast
- 【OpenCV笔记 13】OpenCV中Hough霍夫直线检测和同一窗口显示多幅图片
- opencv—图像显示1
- OpenCV中一个窗口显示两幅图像
- opencv单个窗口中显示多个图像
- FCC-----------Diff Two Array
- 架构设计:负载均衡层设计方案(8)——负载均衡层总结上篇
- 编写规避竞态条件的mysleep
- Linux shell 经验手册__003__高级命令
- 浅析学编程语言PHP/JAVA 你会是下一个牛起来的人吗?
- opencv——同一窗口显示多幅图像
- poj 图相关之3020 Antenna Placement
- 设计模式-组合模式(Composite)
- Windows SDK 按钮
- 【数据结构】栈
- JVM解读-调优常用参数
- 精确到月份的日历插件
- JVM解读-类加载机制
- 【数据结构】队列