opencv在一个窗口里面显示多张图片
2014-10-23 13:01
405 查看
From /article/1411211.html
void imshowMany(const std::string& _winName, const vector<Mat>& _imgs) { int nImg = (int)_imgs.size(); Mat dispImg; int size; int x, y; // w - Maximum number of images in a row // h - Maximum number of images in a column int w, h; // scale - How much we have to resize the image float scale; 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; } 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(100 + size*w, 60 + size*h), CV_8UC3); for (int i= 0, m=20, n=20; i<nImg; i++, m+=(20+size)) { x = _imgs[i].cols; y = _imgs[i].rows; max = (x > y)? x: y; scale = (float) ( (float) max / 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); } void main() { Mat img01 = imread("01.png"); Mat img02 = imread("02.png"); Mat img03 = imread("03.png"); vector<Mat> imgs; imgs.push_back(img01); imgs.push_back(img02); imgs.push_back(img03); imshowMany("Show", imgs); }
相关文章推荐
- OpenCV一个窗口显示多张图片
- OpenCV一个窗口显示多张图片
- OpenCV一个窗口显示多张图片
- 如何利用opencv在一个窗口显示多张图片
- OpenCV 一个窗口显示多个图片
- 【转载】opencv2 一个窗口显示多幅图片(windows7和bunutu系统)
- 在一个窗口中显示多张图片
- OpenCV3 一个窗口显示多个图片的实现函数
- opengl离屏渲染(不需要和窗口绑定,仅当作一个可以渲染一张图片的API使用)+ opencv显示
- 基于OpenCV3实现一个窗口显示若干张图片
- C++将一个图片显示到窗口里面
- opencv3自定义窗口内显示多张图片
- OpenCV2.4.10之多个图片在一个窗口显示
- opencv2 一个窗口显示多幅图片
- MATLAB 如何循环显示多张图片在一个窗口
- opengl离屏渲染(不需要和窗口绑定,仅当作一个可以渲染一张图片的API使用)+ opencv显示
- OpenCV在一个窗口中显示多个视频子窗口
- opencv一个窗口显示多幅图像
- OpenCV 在同一窗口显示多幅图片
- OpenCV读取图片并对比(可窗口显示)