我试图用OpenCV改变一个假眼镜图像的透视图,但是透明部分和不透明度丢失了。结果图像没有透明度。 我想更改透视图,以便将生成的图像压在另一个图像上。在
我能用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)
您加载图像不正确,导致透明层脱落。这很容易验证加载后打印图像的形状。在
未指定时,^{} 的flags参数设置为
IMREAD_COLOR
。根据the documentation这意味着相反,您应该使用
IMREAD_UNCHANGED
通过此更改,图像将正确加载,包括alpha平面。在
^{pr2}$相关问题 更多 >
编程相关推荐