What is the proper way to use stitch() to produce panorama using sequential images?

asked 2016-01-04 02:55:04 -0500

shawhu gravatar image

I tried this

Stitcher::Status status = stitcher.stitch(inputs, pano);
Stitcher::Status status = stitcher.stitch(inputs, rois, pano);

It works great, for most of time, but it does not always produce correct answers. Sometimes it just produce very very strange result.

The thing is, the input_images are always in the correct order, for example, if I have 5 images, the correct order will always be inputs[0] (the one on the left), inputs[1], inputs[2], inputs[3], inputs[4] (the one on the right).

I tried to find a solution on the Internet but it seems there is something fundamental that I need to understand first.

Questions,

  • Can this be solved by using ROIs? So that I can tell the stitcher to always match the first image to the 2nd, and only 2nd, and match the 2nd image to 3rd one, etc etc? If so, how to set the rois? I can't find any example to show how to use rois anywhere.

  • And I also read from stackoverflow that it seems this High Level stitcher will always try to match each single image from the array to the rest of them. Which means when I get more and more images, the processing time increases exponentially. How to fix it? I only need to match 1st image to 2nd and 2nd to 3rd? If I can't use rois, do I have to change the source code of the opencv stack? If so, where do I start? I just need a point of direction.

edit retag flag offensive close merge delete