2017-02-10 17 views
0

Я пытаюсь изменить перспективу изображения поддельных очков с помощью OpenCV, но прозрачные части и непрозрачность теряются. Полученное изображение не имеет прозрачных пленок. Я хочу изменить перспективу, чтобы отпечатать полученное изображение над другим изображением.Проблемы с OpenCV warpPerspective с прозрачными изображениями

Могу ли я сделать это с помощью OpenCV?

#!/usr/bin/python 
import numpy as np 
import cv2 

glasses = cv2.imread('fake_glasses.png') 

RES_SIZE = (500,640) 

pts1 = np.float32([[ 0, 0], [599, 0], 
        [ 0,208], [599,208]]) 
pts2 = np.float32([[ 94,231], [354,181], 
        [115,316], [375,281]]) 

M = cv2.getPerspectiveTransform(pts1,pts2) 

rotated = cv2.warpPerspective(glasses, M, RES_SIZE) 
cv2.imwrite("rotated_glasses.png", rotated) 

fake_glasses.png (with transparent parts

mask.png

ответ

1

Вы загружаете изображение неправильно, понижая уровень прозрачности. Это легко проверить - распечатайте форму изображения после его загрузки.

>>> img1 = cv2.imread('fake_glasses.png') 
>>> print(img1.shape) 
(209, 600, 3) 

Если не указано, то параметр флаги из imread установлен в IMREAD_COLOR. По the documentation это означает

If set, always convert image to the 3 channel BGR color image.

Вместо этого, вы должны использовать IMREAD_UNCHANGED

If set, return the loaded image as is (with alpha channel, otherwise it gets cropped).

С этим изменением, изображение загружается правильно, в том числе альфа-плоскости.

>>> img2 = cv2.imread('fake_glasses.png', cv2.IMREAD_UNCHANGED) 
>>> print(img2.shape) 
(209, 600, 4) 
+0

Есть ли способ «штамповать» преобразованное изображение в другое изображение? Я пытаюсь сделать это с помощью cv2.warpPerspective, но я не могу понять. Должно быть что-то вроде: 'final_image = cv2.warpPerspective (очки, M, RES_SIZE, face_image, borderMode = cv2.BORDER_TRANSPARENT)' – xabi

+0

См [этот ответ] (http://stackoverflow.com/a/37198079/ 3962537). –

+0

ValueError: операнды не могут транслироваться вместе с фигурами (614,500,3) (640,500,3) – xabi

 Смежные вопросы

  • Нет связанных вопросов^_^