iphone - 确定图像亮度/亮度

标签 iphone image-processing opencv brightness

我的 iPhone 应用程序使用 AVFoundation 的 AVCaptureSession 从摄像头捕获实时数据。我能够在运行时访问它的委托(delegate)方法中的数据并从中创建图像。它可以是 CGImage、UIImage 或只是原始数据 (CMSampleBufferRef)。

我想做的是计算亮度,该数据(图像)的亮度。或者它可以是一些其他值,可以指示我输入光的亮度。

有没有标准的方法来获取这个值?也许使用 OpenGL。

提前致谢。

最佳答案

只需将您的图像转换为 YUV format并计算亮度 channel 的平均值。颜色转换是一个典型的操作,任何像样的图像处理框架都支持它。例如,OpenCV(你说的是 OpenGL,但这实际上与图像处理没有任何关系,我假设你指的是 OpenCV)有 CvtColor .

如果您手边没有这样的框架但可以访问像素强度,则可以使用等式:

Y' = 0.299*R + 0.587*G + 0.144*B

获取luma channel ,然后计算平均值。 R、G、B分别代表红、绿、蓝 channel 。

编辑

请注意,您的相机可能会通过修改光圈来补偿亮/暗场景。这取决于相机,但我认为大多数相机都会这样做——否则你的照片可能会变成饱和的(纯白色)或纯黑色——无论哪种情况,都是无用的。人眼其实do the same thing .

缺点是很难仅通过查看图像来判断您是在黑暗还是明亮的环境中。在那种情况下,您可能不得不超越图像并查询相机。理论上,您可以直接通过驱动程序(不太可能)或通过查看图像元数据(例如,对于 JPEG,有 EXIF )来执行此操作。

最后,你还没有说你到底想知道亮度是多少。如果是整体场景,那么平均就够了。如果它是场景的一部分,您可能需要做一些更聪明的事情。如果是这种情况,请告诉我们。

关于iphone - 确定图像亮度/亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876315/

相关文章:

ios - 在 UITableView 中插入项目会导致应用程序崩溃

java - 如何在 Java 中自动裁剪图像的白色边框?

c++ - 从 uint8 c++ 获取 RGB 像素值

c++ - 如何在 OpenCV 中不使用插值(零填充)调整大小?

c++ - 如何对图像使用片段着色器

iphone - 如何简化应用程序中的应用程序设置管理?

iphone - 读取 UIWebView TEXT 内容

iphone - 适用于 iPhone 屏幕的回流 PDF (iPhone SDK)

image-processing - 如何在知道 3D 对象所有 2D View (顶 View 、下 View 、前 View 、后 View ……)的情况下推断出 3D 对象的任何 View

c++ - OpenCV:如何混合多个不同颜色的半透明多边形?