【问题标题】:BGRA being read as RGBABGRA 被读取为 RGBA
【发布时间】:2012-09-30 00:11:15
【问题描述】:

我正在使用 AVCapture 基础通过委托回调检索图像(来自 iphone 4 前置摄像头)。我已将 BGRA 指定为以下格式:

self.theOutput.videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey];

self.output 的类型为 AVCaptureVideoDataOutput。

而且我可以正确预览图像。

  1. 我一直在尝试寻找一种简单的方法来测试单个像素 RGB 以试图更好地理解,例如在相机上方拿着一张蓝卡,但数字只是在 80-110 之间波动,而我的预期是 0 ,0,255 给出了什么?

  2. 当我将一张白卡放在相机上时,我预计每个 RGB 为 255,但我已经接近 120。似乎它在白色上将所有数字都打折了 50%。任何原因?但是当我让直射光照射到相机上时,每个 RGB 元素得到 255。

我觉得我在这里缺少一些基本的理解。

【问题讨论】:

  • 你是如何指定 BGRA 的,你是如何读回无符号字符的?一些代码可以帮助我们帮助您。
  • 感谢您提出正确的问题。我更新了代码。我昨天也一定很累,看起来 BGRA 像素以无符号字符 * 像素的顺序正确读取为 B、G、R、A,所以 B=Pixel[0]、G=Pixel[1] 等....我一直在通过简单的 NSlog 读回数据: NSLog(@"The pixel at row 0 and column 0 is: %i,%i,%i,%i\n",framePixels[0], framePixels [1],framePixels[2],framePixels[3]);你能看看其他2个问题吗?谢谢

标签: ios5 opengl-es avcapturesession rgba core-video


【解决方案1】:

我希望每个 RGB 有 255 个,但我已经接近 120 个。

相机会尝试自动调整其曝光以获得最佳照片。在这种情况下,它可能假设图像的平均亮度应该在 128 左右,并且它会调整以获得该值。相机无法判断您面前的纸张是白色、黑色还是中灰色,因此它假定它必须是中灰色。

【讨论】:

  • 这里有很多东西要学马克。谢谢。那么 RGB 值是否会通过亮度百分比进行调整?我觉得我在这里缺少一些基本的理解。你能不能也给我指点网上的入门书。非常感谢。
  • 是的,当我尝试对来自 iOS 相机的图像进行亮度平均时,我清楚地看到了这一点。在正常光照条件下(不是突然变亮或变暗的区域),从 iOS 摄像头读取的帧的平均亮度几乎总是 50%。他们清楚地调整曝光和增益以跟踪该设定点,除非您明确将其锁定在图像中某个区域的值上。
  • 谢谢布拉德。这进一步澄清了这一点。我希望有一个简单的在线“RGB 滑块 + 亮度”模拟器,可以始终验证颜色。
猜你喜欢
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多