Просто конвертируйте свое изображение в YUV format и вычислите среднее значение канала яркости. Цветопередача является типичной операцией, и любая достойная среда обработки изображений поддерживает ее. Например, OpenCV (вы сказали OpenGL, но это действительно не имеет никакого отношения к обработке изображений, я предполагаю, что вы имеете в виду OpenCV) имеет CvtColor.
Если у вас нет такой структуры, но удобный доступ к интенсивности пикселей, вы можете использовать уравнение:
Y' = 0.299*R + 0.587*G + 0.144*B
, чтобы получить канал яркости, а затем вычислить среднее значение. R, G и B представляют собой красный, зеленый и синий каналы соответственно.
EDIT
Обратите внимание, что это возможно, что ваша камера будет компенсировать яркие/темные сцены, изменяя его апертуру. Это зависит от камеры, но я думаю, что большинство камер делают это, иначе ваши снимки могут быть либо насыщенными (чисто белыми), либо просто черными - в любом случае бесполезными. Человеческие глаза фактически do the same thing.
Недостатком является то, что трудно определить, находитесь ли вы в темной или светлой среде, просто глядя на изображение. В этом случае вам может потребоваться выйти за пределы изображения и запросить камеру. Теоретически вы можете сделать это либо напрямую через драйвер (маловероятно), либо, возможно, взглянув на метаданные изображения (например, с помощью JPEG, есть EXIF).
Наконец, вы не сказали, что именно вы хотите знать яркость. Если это общая сцена, то среднее будет достаточно хорошим. Если это какая-то часть сцены, вам, возможно, придется сделать что-то более умное. Сообщите нам, если это так.
Спасибо, я думаю, это должно сработать. Я попробую и отправлю результат здесь. – krafter
Взгляните на мой отредактированный комментарий - я определил потенциальную проблему и некоторые способы ее решения. – misha
Да, это действительно работает: получение информации о пикселях, разделяющей ее на интенсивности цвета, а затем вычисление Y, как вы показали здесь. Так как мне нужно среднее значение яркости малых (быстрых) световых пульсаций, прежде чем камера сможет приспособиться к ней, этот метод работает хорошо. Еще раз спасибо. – krafter