#c #image-processing #opencv3.0 #perspectivecamera
#c #обработка изображений #opencv3.0 #перспективная камера
Вопрос:
У меня есть изображение белой бумаги на столе, с другой ориентацией. Что-то вроде этого:
Теперь я обнаружил технический документ и получил координаты трапеции. Теперь у меня есть другое изображение, скажем, такой клавиатуры:
Теперь моя цель — заменить эту бумагу этой клавиатурой. Я обнаружил, что getPerspectiveTransform
это можно использовать. Я ссылался на приведенный здесь код в качестве начального для моего. Там, вместо output
, я вставил output = imread("paper.jpg")
, а вместо input
, input = imread("keyboard.jpg")
. А также ранее обнаружил углы белого листа.
Это сработало хорошо, заменив белую бумагу клавиатурой после преобразования, но фон, содержащий стол, карандаш и т.д., Были затемнены. Весь фон стал черным, и была видна только клавиатура, заменившая белую бумагу.
Итак, я хотел знать, как заменить часть с помощью преобразования перспективы, сохраняя при этом фоновое изображение.
Ответ №1:
Если вы не редактировали код в публикации, вы преобразуете клавиатуру, но не добавляете исходное изображение за ней. Вам нужно будет каким-то образом скомпоновать 2 изображения вместе. Предполагая, что изображение клавиатуры имеет альфа-канал, вы могли бы следовать этому методу: https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python /.
Если у него нет альфа-канала, вы можете создать свою собственную маску и объединить входные и выходные изображения вместе, модерируемые маской:
composite = input
composite[mask != 0] = output * mask
Удачи!