首页 > 解决方案 > 如何在 CIE LAB 颜色空间中找到代表图像中皮肤的最佳像素值?

问题描述

我想表示代表此图像中皮肤的最佳 LAB 像素值(可能是平均值、中值或其他值)。

以下是我在这里为这个输入图像尝试的代码:

image = cv2.imread('face.jpg')
image = image.astype("float32") / 255
imgLab = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)
L, a, b = cv2.split(imgLab)
LL=np.zeros((512, 512))
aa=np.zeros((512, 512))
bb=np.zeros((512, 512))
data=[]
width, height, channels = imgLab.shape
for i in range(width):
    for j in range(height):
        if (50 <= L[i,j] <= 100):
            LL[i,j] = L[i,j]
            aa[i,j] = a[i,j]
            bb[i,j] = b[i,j]
LL = LL[LL!=0]
aa = aa[aa!=0]
bb = bb[bb!=0]
L_mean = np.mean(LL)
a_mean = np.mean(aa)
b_mean = np.mean(bb)
print(L_mean, a_mean, b_mean)

很明显,脸部有深色皮肤像素。但是当我在这里取平均值时,我得到了一个对应于浅肤色的 LAB 平均像素。

标签: pythonnumpyopencvcv2

解决方案


推荐阅读