gpt4 book ai didi

android - 从实时相机预览android检测肤色

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:48 25 4
gpt4 key购买 nike

我正在尝试构建一个应用程序,它可以检测皮肤不同部位(手、前额、脸颊)的肤色,而不管光照条件如何。我可以使用这个 project 来做到这一点但它没有考虑照明条件。这是 Iphone app 之一这是做什么的

最佳答案

如果您想自己进行一些图像处理,我建议您为图像的每个面部区域创建一个直方图。只要 opencv 能够检测到人脸,您就应该能够对该区域的直方图进行归一化,并采用归一化版本的颜色值。

也许您想分别标准化所有 channel (R、G、B)以减少彩色光的影响。

阅读此处了解有关直方图的更多信息:https://en.wikipedia.org/wiki/Histogram

当您遵循这种方式时,我强烈建议将一张脸作为一个整体区域来创建直方图。

[编辑]

既然我知道你想做什么,我想你可以采取以下方法:

如您所见,用户需要前后轻按相机。由于图像是由手机背面 LED 照亮的,因此直方图确实正是该应用程序的创建者所创建的。但是,不是来自不同的像素,而是来自使用不同照明级别的同一像素的不同样本。

当您离皮肤很近时,相机会向您显示一个近乎白色的图像,如果您愿意,也就是直方图计算的“固定点”。

虽然我不打算展示直接代码,但我会尝试解释数学模型:

  • 在图像中定义一个“焦点”区域。该区域是您在计算直方图时要考虑的区域。边缘的所有其他区域将被忽略。
  • 采集一些样本(例如 3 秒,每秒 10 个样本 = 30 个样本)
  • 创建每个样本的直方图并将它们加在一起:
    • 对于每个亮度值(最多有 256 个)计算与该值匹配的像素数,将所有样本加在一起
    • 找出至少有 threshold 个值的最高值和最低值(如果您愿意,可以是您的“工作”范围)并将它们称为 histLow历史高
    • 重新计算每个像素,使 pixel = (pixel-histLow)/(histHigh-histLow) * 255
    • 将像素值限制在 0 - 255 范围内
    • 取较窄范围内像素的平均颜色值(例如,仅取最大数量的样本)

如果您不知道如何乘以或添加 RGB 颜色,那么您应该从另一个问题开始。

关于android - 从实时相机预览android检测肤色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com