是否可以输出图像以便它们都在一个窗口内? 之前,我曾经只使用opencv函数输出数据:
cvNamedWindow("Image 1");
cvShowImage("Image 1", img);
所以我改变了图像,然后调用:cvShowImage
函数等等。
但是如果我想查看多个图像,那么每个新图像都需要在其中显示自己的窗口。我想要的是将每个这样的输出opencv的窗口放在一个大的主窗口中。
有可能吗?怎么样?
答案 0 :(得分:1)
您必须构建一个新图像并将每个img
放入其中。我不认为有像MATLAB subplot
这样的内置函数。我建议使用ROI功能将图像快速复制到大图像的感兴趣区域(ROI)(其中包含其他图像)。
答案 1 :(得分:0)
您可以使用hconcat功能在单个窗口上显示任意数量的图像。 让我们假设您的原始图像是
Mat frame;
现在使用
克隆或制作此图像的副本Mat frame1 = frame.clone();//or
Mat frame2;
frame.copyTo(frame1);
现在让我们假设您的输出图像是
Mat img1,img2,img3,img4;
现在,如果要水平显示图像,请使用
hconcat(img1,img2,frame1)//hconcat(input_image1,input_image2,destination_image);
如果要垂直显示图像,请使用
frame2.push_back(img1);//main_image.push_back(image_to_be_shown_below);
此过程一次处理一张图像,因此如果要并排显示4张图像,则需要将此功能调用4次,如
hconcat(img1,img2,frame1);
hconcat(frame1,img3,frame1);
hconcat(frame1,img4,frame1);
imshow("Final Image",frame1);
注意: 克隆过程已完成,因为图像必须具有相同的大小。
...享受