У меня есть изображение кожи лица с черными пикселями вокруг него.
Изображение представляет собой трехмерный массив, состоящий из пикселей (RGB)
массив изображения = ширина * высота * RGB
Проблема в том, что на картинке так много черных пикселей, которые не принадлежат коже.
Черные пиксели представляют собой массив нулей. [0,0,0]
I want to get 2d array with non-black pixels as [[218,195,182]. ... [229,0, 133]] -with only the pixels of facial skin color
I try to eject the black pixels by finding all the pixels whose all RGB is equal to 0 like [0,0,0] only:
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 не подходит
Как написать его более эффективным и быстрым способом?
Спасибо