Получить значение яркости для изображения

Получить значение яркости для изображения

Я использую openHAB и хочу использовать старый мобильный телефон в качестве индикатора день/ночь. Я установил приложение веб-камеры, и оно снимает небо. Я могу получить последний снимок через http://[ip]/shot.jpg.

Могу ли я получить «значение яркости» следующим образом: curl http://[ip]/shot.jpg | some-command --get-brightness?

решение1

На вопрос дан ответздесь, на сайте Software Recommendations Stack ExchangeкСтив Барнс.

Две возможности:

Использование imagemagick для проверки яркости изображения будет работать, если камера телефона не имеет автоэкспозиции или она выключена, в противном случае она будет работать только для экстремальных значений (темный/светлый), например

 convert <image> -colorspace Gray -format "%[fx:quantumrange*image.mean]" info:

exiftool может проанализировать EXIF-информацию из файла и извлечь «значение освещенности», которое должно дать вам достаточно согласованные показания (при условии, что камера на вашем конкретном телефоне включает этот тег).

Оба инструмента бесплатны, распространяются бесплатно, имеют открытый исходный код и доступны для большинства платформ.

решение2

В качестве альтернативы exiftool вы можете использоватьexiv2, который, как я обнаружил, работает намного быстрее, чем exiftool и imagemagick.

Сравнение (на Raspberry Pi Zero)

Тестирование проводилось с использованием одного и того же изображения размером 4056 x 3040.

Imagemagick конвертировать

pi@rpicamhq:/mnt/ramdisk $ time convert image.jpg -colorspace Gray -format "%[fx:quantumrange*image.mean]" info:
1039.34
real    0m1,989s
user    0m1,753s
sys     0m0,193s

Формат идентификации Imagemagick

pi@rpicamhq:/mnt/ramdisk $ time identify -format "%[mean]\n" image.jpg
1128.99

real    0m3,357s
user    0m3,133s
sys     0m0,199s

pi@rpicamhq:/mnt/ramdisk $ time identify -format "%[fx:mean]\n" image.jpg
0.0172272

real    0m3,435s
user    0m3,274s
sys     0m0,130s

pi@rpicamhq:/mnt/ramdisk $ time identify -format "%[fx:quantumrange*mean]\n" image.jpg
1128.99

real    0m3,387s
user    0m3,218s
sys     0m0,139s

Imagemagick идентифицирует exif

pi@rpicamhq:/mnt/ramdisk $ time identify -format '%[EXIF:BrightnessValue]'

real    0m0,275s
user    0m0,071s
sys     0m0,040s

exiftool

pi@rpicamhq:/mnt/ramdisk $ time exiftool -a -u -g1 image.jpg | grep 'Brightness'
Brightness Value                : 0.01

real    0m2,647s
user    0m2,429s
sys     0m0,191s

exiv2

pi@rpicamhq:/mnt/ramdisk $ time exiv2 -PElt image.jpg | grep 'Brightness'
Brightness                      0.01

real    0m0,097s
user    0m0,042s
sys     0m0,050s

exiv2, без grep

pi@rpicamhq:/mnt/ramdisk $ time exiv2 -PElt -g Brightness image.jpg
Brightness                      0.01

real    0m0,070s
user    0m0,024s
sys     0m0,039s

Связанный контент