用OpenCV实现在一个窗口上显示多个图像,编译环境:win7 32bit + vs2010 + opencv 2.4.11。
源程序如下:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
Mat image1 = imread("fruits.jpg"); //分辨率512*480
Mat image2 = imread("LinuxLogo.jpg"); //分辨率320*240
Mat image3 = imread("WindowsLogo.jpg"); //分辨率320*240
Mat manyImages(480,832,CV_8UC3,Scalar(0,0,0)); //主窗口
Mat image1_1 = manyImages(Rect(0,0,512,480));
Mat image2_2 = manyImages(Rect(512,0,320,240));
Mat image3_3 = manyImages(Rect(512,240,320,240));
resize(image1, image1_1,Size(512,480));
resize(image2, image2_2,Size(320,240));
resize(image3, image3_3,Size(320,240));
imshow("manyImages",manyImages);
waitKey(0);
return 0;
}
有个注意的地方,定义窗口大小时第一个参数是行(高),第二个参数是列(宽)。矩形方法中第三个参数是长(列),第四个参数是高(行)。刚开始时显示不了图像就因为含义搞错了。
仅留存以后参考用。