【发布时间】:2021-06-23 15:13:17
【问题描述】:
我写了一个程序来改变照片中皮肤的颜色。
首先我得到一个皮肤遮罩,然后我将 BGR 图像转换为 HSV。在掩码中添加 V 通道值。像这样:
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
H, S, V = cv2.split(hsv)
NV = np.where(skin_mask > 0, V + skin_mask / 255 * 50, V).astype(np.uint8)
NHSV = cv2.cvtColor(cv2.merge([H, S, NV]), cv2.COLOR_HSV2BGR)
但是一些原来的白色像素变成了黑色,我想可能是 V + skin_mask / 255 * 50 让像素超过 255。
所以我尝试:
NV = np.where(skin_mask > 0, np.where(V + skin_mask / 255 * 50 > 255, 255, V + skin_mask / 255 * 50), V).astype(np.uint8)
这是工作。但是很丑。
我想知道如何美化这篇文章,不要使用np.where包括np.where。非常感谢!!!
【问题讨论】: