【发布时间】:2020-08-04 15:44:20
【问题描述】:
我有一张面部皮肤的照片,周围有黑色像素。
图片是由像素 (RGB) 组成的 3d 数组
图片的数组 = 宽 * 高 * RGB
问题是图片中有这么多不属于皮肤的黑色像素。
黑色像素表示为零数组。 [0,0,0]
我想将非黑色像素的二维数组设为 [[218,195,182]。 ... [229,0, 133]] - 只有面部肤色的像素
我尝试通过查找所有 RGB 等于 0 的所有像素仅像 [0,0,0] 来弹出黑色像素:
def eject_black_color(skin):
list=[]
#loop over pixels of skin-image
for i in range(skin.shape[0]):
for j in range(skin.shape[1]):
if(not (skin[i][j][0]==0 and skin[i][j][1]==0 and skin[i][j][2]==0)):
#add only non-black pixels to list
list.append(skin[i][j])
return list
请注意,我不想从像素中提取零,例如:[255,0,125] [0,0,255] 等,因此 numpy 的非零方法不适合
如何写更高效快捷?
谢谢
【问题讨论】: