开发者

Using opencv in Win32 application for image show

开发者 https://www.devze.com 2023-01-03 17:52 出处:网络
Is it possible to output images so that they all will be inside a single window? Before, I used to output data using only opencv functions:

Is it possible to output images so that they all will be inside a single window? Before, I used to output data using only opencv functions:

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

So I change image, then call: cvShowImage function and so on. But If I want to lo开发者_C百科ok at more than one image, then every new image needs its own window to be shown there And what I want is to put every such an output opencv's window inside one big main window.

Is it possible to do it? And how?


You will have to construct a new image and place each img into it. I don't think there's a builtin function like MATLAB's subplot. I recommend using the ROI functions to quickly copy an image into a region-of-interest (ROI) of the big image (which holds the others).


You can show as many images as you want on a single window using hconcat function. Let us suppose your original image was

Mat frame;

Now clone or make a copy of this image using

Mat frame1 = frame.clone();//or
Mat frame2;
frame.copyTo(frame1);

Now let us suppose your output images are

Mat img1,img2,img3,img4;

Now if you want to show images horizontally, use

hconcat(img1,img2,frame1)//hconcat(input_image1,input_image2,destination_image);

And if you want to show images vertically, use

frame2.push_back(img1);//main_image.push_back(image_to_be_shown_below);

This process processess images one at a time, so if you want to show 4 images side by side, you have to call this function 4 times as in

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

NOTE: Clone process is done because the images have to be of same size.

Enjoy...

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号