首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从iOS摄像头获取亮度

从iOS摄像头获取亮度
EN

Stack Overflow用户
提问于 2013-01-24 14:56:33
回答 1查看 1.2K关注 0票数 0

我想从摄像头获取亮度,我已经检查了解决方案(计数平均亮度) obtaining-luminosity-from-an-ios-camera

但是相机会自动设置曝光,所以如果它将相机转到光源(例如灯泡),那么第一次的亮度会很高,但过了一段时间,这个值就会变低,因为曝光设置被更改了。我已经测试了锁定曝光,但这不是一个好的解决方案,因为如果在相机图像变暗时锁定曝光,那么很少的光源就会被算作非常高的值。有没有办法得到亮度的绝对值?我已经检查了应用程序光探测器,这个应用程序运行良好,曝光改变,但亮度值是稳定的。

向Adam致敬

EN

回答 1

Stack Overflow用户

发布于 2015-07-19 17:32:38

假设您这样做了,下面是OpenGL ES代码,它将只返回它处理的图像的亮度值:

代码语言:javascript
运行
复制
vec4 rgb2hsl(vec4 color)
{
    //Compute min and max component values
    float MAX = max(color.r, max(color.g, color.b));
    float MIN = min(color.r, min(color.g, color.b));

    //Make sure MAX > MIN to avoid division by zero later
    MAX = max(MIN + 1e-6, MAX);

    //Compute luminosity
    float l = (MIN + MAX) / 2.0;

    //Compute saturation
    float s = (l < 0.5 ? (MAX - MIN) / (MIN + MAX) : (MAX - MIN) / (2.0 - MAX - MIN));

    //Compute hue
    float h = (MAX == color.r ? (color.g - color.b) / (MAX - MIN) : (MAX == color.g ? 2.0 + (color.b - color.r) / (MAX - MIN) : 4.0 + (color.r - color.g) / (MAX - MIN)));
    h /= 6.0;
    h = (h < 0.0 ? 1.0 + h : h);

    return vec4(h, s, l, color.a);
}

kernel vec4 hsl(sampler image)
{
    //Get pixel from image (assume its alpha is 1.0 and don't unpremultiply)
    vec4 pixel = unpremultiply(sample(image, samplerCoord(image)));

    //Convert to HSL; only display luminance value
    return premultiply(vec4(vec3(rgb2hsl(pixel).b), 1.0));
}

上面是苹果开发人员最初编写的OpenGL ES代码;我对其进行了修改,使其只显示亮度值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14495573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档