Как освободить место для сшивания нескольких изображений в OpenCV - Python3

Я пытаюсь сшить 4 изображения одинакового размера вместе в виде сетки.

У меня уже есть соответствующие точки между каждым из 4 изображений (выбранных вручную из-за отсутствия сложности изображений). Я вычисляю гомографию между каждым из изображений, используя

h = cv2.findHomography(points1, points2, cv2.RANSAC, n)

а затем преобразовать их с помощью

img2Transformed = cv2.warpPerspective(img2, h, (YSHAPE, XSHAPE))

Моя проблема заключается в

(YSHAPE, XSHAPE)

Я не уверен, как определить эту область. Сначала я думал установить его на (img1.shape[1] + img2.shape[1], img1.shape[0] + img2.shape[0]), а затем установить исходные координаты img2Transformed на img1, используя

img2Tranformed[:img1.shape[1], :img1.shape[0]] = img1

но потом понял, что преобразованное изображение все еще могло быть деформировано за пределы экрана вот так:

пример экрана

После получения преобразованного изображения, как мне объединить два изображения, не обрезая ничего? И как только я это сделаю, как мне освободить место для всех 4 изображений?


person Rushil Joshi    schedule 10.07.2018    source источник
comment
Хотел бы я увидеть этот вопрос раньше, чем через две недели! Я ответил на этот точный вопрос раньше и написал функции Python и OpenCV для деформации без обрезки. Связанный дубликат показывает, как именно это сделать самостоятельно, и ссылки на репозитории GH для инструментов.   -  person alkasm    schedule 27.07.2018