Сохранение изображения при трансформации перспективы в OpenCV C ++ - PullRequest
0 голосов
/ 14 марта 2019

У меня на столе изображение белой бумаги с другой ориентацией. Примерно так:

enter image description here

Теперь я обнаружил белую бумагу и получил координаты трапеции. Теперь у меня есть другое изображение, скажем, такой клавиатуры:

enter image description here

Теперь моя цель - заменить эту бумагу этой клавиатурой. Я обнаружил, что getPerspectiveTransform можно использовать. Я назвал код, указанный здесь , как стартовый для моего. Там вместо output я кормил output = imread("paper.jpg") и вместо input, input = imread("keyboard.jpg"). А также ранее обнаружил углы белого листа.

Это работало хорошо, заменяя белую бумагу клавиатурой после преобразования, но фон, содержащий стол, карандаш и т. Д., Затемнялся. Весь фон стал черным, и была видна только клавиатура, заменяющая белую бумагу.

Итак, я хотел знать, как заменить часть с помощью преобразования перспективы, сохраняя при этом фоновое изображение.

1 Ответ

0 голосов
/ 18 марта 2019

Если вы не редактировали код в сообщении, вы изменяете клавиатуру, но не добавляете исходное изображение за ней.Вам нужно будет каким-то образом объединить 2 изображения вместе.Предполагая, что на изображении клавиатуры есть альфа-канал, вы можете воспользоваться этим методом: https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python/.

Если у него нет альфа-канала, вы можете создать собственную маску и объединить входные и выходные изображения вместе, модерируемыйпо маске:

composite = input
composite[mask != 0] = output * mask

Удачи!

...