python - 如何在 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 平均像素。
解决方案
推荐阅读
- unit-testing - 在 Quarkus 中执行端点单元测试的最佳方法是什么?
- java - 无法从 Spring Boot 连接到 postgresql 模式 - 'org.postgresql.util.PLSQLException:错误:模式“测试”不存在'
- curve-fitting - 在点的同一侧拟合曲线
- python - 通过参数化查询使用 python 插入 MySQL 会导致错误
- java - 无法让 Android Studio 连接到 MySQL 数据库
- flutter - flutter:录制与动画 webp 时长相同的视频
- regex - 为什么我的 Ruby RegExp 不能正常工作?
- arrays - 如果所有值都是正数并且数字 <= k,我可以在 O(n) 中对数组进行排序吗?
- r - R:如何重新排列列中的冗余值,以便行少列多
- sql - 根据上次更新的记录更新下一条记录