是否可以输出图像以便它们全部位于单个窗口内? 之前,我用来输出数据只使用OpenCV函数:在Win32应用程序中使用opencv进行图像显示
cvNamedWindow("Image 1");
cvShowImage("Image 1", img);
所以我改变形象,然后调用:cvShowImage
功能等。 但是,如果我想看看多个图像,那么每个新图像都需要显示其自己的窗口。我想要的是将每个这样的输出opencv的窗口放在一个大的主窗口中。
是否可以做到这一点?如何?
是否可以输出图像以便它们全部位于单个窗口内? 之前,我用来输出数据只使用OpenCV函数:在Win32应用程序中使用opencv进行图像显示
cvNamedWindow("Image 1");
cvShowImage("Image 1", img);
所以我改变形象,然后调用:cvShowImage
功能等。 但是,如果我想看看多个图像,那么每个新图像都需要显示其自己的窗口。我想要的是将每个这样的输出opencv的窗口放在一个大的主窗口中。
是否可以做到这一点?如何?
你将不得不构建一个新的图像,并将其放入每个img
。我不认为像MATLAB的subplot
这样的内置函数。我建议使用ROI功能将图像快速复制到大图像(其中包含其他图像)的感兴趣区域(ROI)。
您可以使用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);
这个过程processess一张图像的时间,所以,如果你想显示并排4图像的一面,你必须调用这个函数4倍在
hconcat(img1,img2,frame1);
hconcat(frame1,img3,frame1);
hconcat(frame1,img4,frame1);
imshow("Final Image",frame1);
注: 克隆过程做是因为图片必须是相同的大小。
享受...