取得圖片的亮度值

取得圖片的亮度值

我使用 openHAB 並想使用舊手機作為日/夜指示器。我安裝了一個網路攝影機應用程序,它正在拍攝天空。我可以透過 獲得最新的照片http://[ip]/shot.jpg

我可以得到這樣的「亮度值」:curl http://[ip]/shot.jpg | some-command --get-brightness

答案1

問題得到解答這裡是軟體推薦堆疊交換經過史蒂夫·巴恩斯

兩種可能性:

只要手機相機沒有自動曝光或關閉,使用 imagemagick 檢查影像的亮度就可以工作,否則它只適用於極值(暗/亮),例如

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

exiftool 可以解析文件中的 EXIF 資訊並提取“光值”,這應該為您提供相當一致的讀數(假設您的特定手機上的相機包含此標籤)。

這兩種工具都是免費、免費和開源的,可用於大多數平台。

答案2

除了 exiftool,您還可以使用出口2,我發現它比 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

出口2

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

相關內容