如何在2张图像之间交换颜色?

时间:2018-07-29 04:48:17

标签: numpy opencv

我有一张黑色背景的眼镜图像,需要将其覆盖在面部图像上。为此,我正在拍摄与眼镜形状相同的面部图像部分。并将面部图像的颜色放在眼镜图像的黑色部分上。然后可以放回图像的这一小部分。但是我无法从面部图像中为眼镜图像获取正确的颜色。我尝试了这个:

specs[np.where((hmd == [0,0,0,0]).all(axis=2))] = sub_face

规格图片:

enter image description here

人脸图像:

enter image description here

我需要将调整大小后的规格图像当面。我已经调整了规格图像的大小,并且还知道将规格放置在面部图像上的位置。我只需要从规格中删除黑色背景并添加相关的脸部颜色,就可以自然地看到脸上有规格。

我正在使用的代码:

import cv2

specs = cv2.imread("rot_h0v0z0.png")
face = cv2.imread("~/Downloads/celebA/000001.png")
specs = cv2.resize(image, None, fx=0.3, fy=0.3, interpolation=cv2.INTER_AREA)

sub_face = face[0:specs.shape[0], 0:specs.shape[1]]
specs[np.where((hmd == [0,0,0,0]).all(axis=2))] = sub_face

能够解决它,结果很简单:P

(b,g,r) = cv2.split(specs)
indices = np.where(b == [0])
for i,j in zip(indices[0], indices[1]):
    specs[i,j] = sub_face[i,j]

1 个答案:

答案 0 :(得分:0)

能够解决它,结果很简单:P

\"...\"