私は openHAB を使用しており、古い携帯電話を昼夜インジケーターとして使用したいと考えています。ウェブカメラ アプリをインストールして、空を撮影しています。最新のショットは から取得できますhttp://[ip]/shot.jpg
。
次のような「明るさの値」を取得できますかcurl http://[ip]/shot.jpg | some-command --get-brightness
?
答え1
質問は回答されましたソフトウェア推奨事項のStack Exchangeはこちらによるスティーブ・バーンズ。
2つの可能性:
imagemagickを使用して画像の明るさをチェックすることは、携帯電話のカメラに自動露出機能がないかオフになっている限り機能しますが、そうでない場合は極端な値(暗い/明るい)に対してのみ機能します。例:
convert <image> -colorspace Gray -format "%[fx:quantumrange*image.mean]" info:
exiftool はファイルから EXIF 情報を解析し、「Light Value」を抽出します。これにより、かなり一貫した読み取り値が得られます (特定の携帯電話のカメラにこのタグが含まれていると仮定)。
どちらのツールも無料、無償、オープンソースであり、ほとんどのプラットフォームで利用できます。
答え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
exifツール
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