在Win32应用程序中使用opencv进行图像显示

时间:2010-06-18 06:08:43

标签: user-interface opencv

是否可以输出图像以便它们都在一个窗口内? 之前,我曾经只使用opencv函数输出数据:

cvNamedWindow("Image 1");
cvShowImage("Image 1", img);

所以我改变了图像,然后调用:cvShowImage函数等等。 但是如果我想查看多个图像,那么每个新图像都需要在其中显示自己的窗口。我想要的是将每个这样的输出opencv的窗口放在一个大的主窗口中。

有可能吗?怎么样?

2 个答案:

答案 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);

注意: 克隆过程已完成,因为图像必须具有相同的大小。

...享受