如何知道图像是否太暗以至于需要使用OpenCv进行闪存

时间:2016-09-29 03:01:40

标签: android opencv computer-vision android-camera

我正在使用OpenCV在Android项目中工作,我正在使用表面来实现我自己的相机,因为我想向用户提供有关他们正在拍摄的照片的反馈,以帮助他们提高质量。我要做的是检测他们将拍摄的图像有多暗,并建议他们使用闪光灯。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您可以控制相机的参数,请在使用闪光灯之前考虑对它们进行调整。如果您想要全局曝光的 x2 因子,您可以:

  • 2
  • 乘以 曝光时间
  • 将光圈值(或 f-number )除以 sqrt(2)
  • 2 乘以 增益 (这会增加一些噪音)

现在回答这个问题,如果您已经知道如何使用OpenCV访问图像中的像素,我首先建议您使用cvtColor将其转换为灰度,然后您可以计算(对于每个图像) )像素强度之和(cv::sum)并定义图像“太暗”的阈值。

伪代码的例子(这应该根据你的需要/应用程序进行改进):

while sum(pixels) < threshold
   it_nb=0
   exp_time += 0.1 (second)
   if it_nb>fixed_limit or if (exp_time/gain cannot be increased anymore)
      print 'use flash'      
      break