Andy K
Andy K

Reputation: 181

OpenCV Stitcher class not working in Python, always returns ERR_NEED_MORE_IMGS

I'm trying to use the OpenCV Stitcher class for putting two images together. I ran the simple example provided in the answer to this question with the same koala images, but it returns (1, None) every time. I've tried this on opencv-python version 3.4, 4.2, and 4.4, and all have the same result.

I've tried replacing the stitcher initializer with something else, (cv2.Stitcher.create, cv2.Stitcher_create, cv2.createStitcher), but nothing seems to work. If it helps, I'm on Mac Catalina, using Python 3.7. Thanks!

Upvotes: 3

Views: 4294

Answers (2)

Ashper Sega
Ashper Sega

Reputation: 1

Try rescaling the images to 0.6 and 0.6 , by using the resize. For some reason I got the result only at those values.

Upvotes: 0

vasiliykarasev
vasiliykarasev

Reputation: 871

Try changing the default pano confidence threshold using setPanoConfidenceThresh(). By default it's 1.0, and apparently it results in the stitcher thinking that it has failed.

Here is the full example that works for me. I used that pair of koala images as well, and I am on opencv 4.2.0:

stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA)
stitcher.setPanoConfidenceThresh(0.0) # might be too aggressive for real examples
foo = cv2.imread("/path/to/image1.jpg")
bar = cv2.imread("/path/to/image2.jpg")
status, result = stitcher.stitch((foo,bar))
assert status == 0 # Verify returned status is 'success'
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

I think in this particular case cv2.Stitcher_SCANS is a better mode (transformation between images is just a translation), but either SCANS or PANORAMA works.

Upvotes: 2

Related Questions