Как установить режим панорамы в классе OpenCV Python Stitcher? - PullRequest
0 голосов
/ 30 мая 2018

Исходя из этого вопроса / ответа , я пытался использовать класс Stitcher OpenCV в python.Мой код в основном такой же, как в ответе.

import cv2

stitcher = cv2.createStitcher(False)
foo = cv2.imread("D:/foo.png")
bar = cv2.imread("D:/bar.png")
result = stitcher.stitch((foo,bar))

cv2.imwrite("D:/result.jpg", result[1])

Проблема в том, что я хочу изменить режим с панорамного на сканирование. В документации по c ++ метод create имеет ввод режима.Тем не менее, класс createStitcher в Python принимает только один вход - независимо от того, пытается ли gpu или нет.Есть ли способ указать режим в Python?

Когда я пытался создать createStitcherScans, я получаю сообщение об ошибке

stitcher = cv2.createStitcherScans(False)
"AttributeError: 'module' object has no attribute 'createStitcherScans'"

Я обнаружил эту проблему GitHub , которая кажется актуальной, поскольку в привязках Python что-то отсутствует.Но это над моей головой, и я не уверен, как отредактировать код opencv, чтобы сделать это правильно.Я попытался добавить это в stitching.hpp:

typedef Stitcher::Mode Mode;

Но ничего не произошло.createStitcher (1, False) все еще выдает мне ошибку атрибута.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

Это было решено в Open CV 4 (по крайней мере, в 4.1.0, который я запускаю).Теперь вы можете указать mode в качестве аргумента ключевого слова для cv2.Stitcher.create:

stitcher = cv2.Stitcher.create(mode = 1)

Кажется, что метки перечисления для различных режимов еще не перенесены, но они работают с числами.PANORAMA - это 0, SCANS - это 1 в соответствии с определением здесь .

Обратите внимание: если вы работаете в Google Colab, вы можете изменить версию Open CV.как это:

!pip3 install opencv-python==4.1.0.25
0 голосов
/ 17 января 2019

У меня та же проблема.После просмотра документации кажется, что функция-обертка python не отображает в create (), а в createDefault (), у которой нет входных данных режима, только входных данных try_use_gpu.У меня нет опыта работы с оболочками, но можно попытаться выяснить это, прочитав информацию OpenCV о том, как работают привязки python .

, основываясь на моей работе с stitch до сих пор в python.кажется, что createDefault () создает брошюровщик в режиме PANORAMA, поскольку он деформирует мои изображения.Я не могу посвятить рабочее время просмотру упаковщиков, но если я потрачу личное время, чтобы исправить это, я обновлю свой ответ здесь.

...