如何找到图像中所有皮肤像素的中值 (R,G,B) 像素值?

How to find the median (R,G,B) pixel value of all skin pixels in an image?

这里如何获取图像中所有皮肤像素的中值像素值(median RGB)? https://i.imgur.com/qU1wW6s.jpg

我尝试了以下方法:

if __name__ == '__main__':
    image = cv2.imread('skin.png')
    COLOR1 = [0,0,0]
    COLOR2 = [10,10,10]
    image_copy = image.copy()
    black_pixels_mask = np.all(image <= COLOR2, axis=-1)
    non_black_pixels_mask = ~black_pixels_mask
    image_array = image_copy[non_black_pixels_mask]
    med = np.median(image_array, axis=0)
    print(med)

但这似乎没有给出正确答案。请帮忙!

这是我发现的:(185.0, 155.0, 135.0)

这是代码。注意 split returns 颜色序列 b,g,r.

import cv2
import numpy as np


image = cv2.imread('skin.jpg')

def getMedianImageChannels(im):
    b, g, r = cv2.split(im) # Split channels
    # Remove zeros
    b = b[b != 0]
    g = g[g != 0]
    r = r[r != 0]
    # median values
    b_median = np.median(b)
    r_median = np.median(r)
    g_median = np.median(g)
    return r_median,g_median,b_median

median = getMedianImageChannels(image)
print(median)

如果这就是您要找的,请告诉我。希望对您有所帮助!