2010-06-18 210 views
0

是否可以输出图像以便它们全部位于单个窗口内? 之前,我用来输出数据只使用OpenCV函数:在Win32应用程序中使用opencv进行图像显示

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

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

是否可以做到这一点?如何?

回答

1

你将不得不构建一个新的图像,并将其放入每个img。我不认为像MATLAB的subplot这样的内置函数。我建议使用ROI功能将图像快速复制到大图像(其中包含其他图像)的感兴趣区域(ROI)。

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

这个过程processess一张图像的时间,所以,如果你想显示并排4图像的一面,你必须调用这个函数4倍在

hconcat(img1,img2,frame1); 
hconcat(frame1,img3,frame1); 
hconcat(frame1,img4,frame1); 
imshow("Final Image",frame1); 

注: 克隆过程做是因为图片必须是相同的大小。

享受...

相关问题