获取图片的亮度值

获取图片的亮度值

我使用 openHAB,想用旧手机作为日夜指示器。我安装了一个网络摄像头应用程序,它正在拍摄天空。我可以通过 获取最新的镜头http://[ip]/shot.jpg

我可以获得这样的“亮度值”吗:curl http://[ip]/shot.jpg | some-command --get-brightness

答案1

问题得到解答软件推荐 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

外置工具

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

相关内容