今回も前回に続いてRaspberry PIのカメラコマンドを使ってみます。

前回と同様に撮影したデータはRaspberry PIのホームディレクトリにあるPicturesディレクトリに保存します。カレントディレクトリはこのPicturesディレクトリとします。コマンドならcd ~/Picturesです。

明るさの指定

 明るさの指定はbrightnessオプションになります。値が1.0になるほど明るくなり、-1.0になるほど暗くなります。

rpicam-still -o 1.jpg --rotation 180 --brightness 0.5 > /dev/null 2>&1
rpicam-still -o 2.jpg --rotation 180 --brightness -0.5 > /dev/null 2>&1

 明るさを指定するもう1つのオプションとしてevがあります。これは露出補正値を指定するものです。値が大きくなると明るく、負数になると暗くなります。

rpicam-still -o 1.jpg --rotation 180 --ev 2 > /dev/null 2>&1
rpicam-still -o 2.jpg --rotation 180 --ev -2 > /dev/null 2>&1

彩度の指定

 彩度の指定はsaturationオプションになります。値が0になるほど彩度が下がり、値が大きくなるほど彩度が増します。

rpicam-still -o 0.jpg --rotation 180 --saturation 0 > /dev/null 2>&1
rpicam-still -o 5.jpg --rotation 180 --saturation 5 > /dev/null 2>&1

JPEG以外の形式で保存

 通常はJPEG形式で保存されますが、PNGやBMPなど他の画像形式で保存したい場合もあります。この場合、encodingオプションを指定します。

rpicam-still -o 1.png --rotation 180 --encoding png > /dev/null 2>&1
rpicam-still -o 1.bmp --rotation 180 --encoding bmp > /dev/null 2>&1

 単純にJPEG形式で保存するだけならrpicam-jpegコマンドを使う方法もあります。

rpicam-jpeg -o 1.jpg --rotation 180 > /dev/null 2>&1

ファイル名を時間に対応させる

 ファイル名を日時に対応させたい場合があります。この場合、datetimeオプションを指定します。(oオプションは不要)

rpicam-still --datetime --rotation 180 > /dev/null 2>&1

UNIXタイムにしたい場合はtimestampオプションを指定します。これは1970年1月1日午前0時からのミリ秒になります。

rpicam-still --timestamp --rotation 180 > /dev/null 2>&1

 datetimeオプションでは月日と時分秒の組み合わせになりますが、西暦4桁の年数も入れたい場合があります。このような場合はrpicam-stillのオプションでは無理なので以下のようにしてシェルの機能を利用します。
 以下の例では年月日と時分秒の組み合わせをファイル名にします。

rpicam-still -o $(date +"%Y%m%d_%H%M%S").jpg --rotation 180 > /dev/null 2>&1

それぞれの記号の意味は以下のようになります

%Y 西暦4桁年数
%m
%d
%H
%M
%S

最後に撮影した画像を別名で生成する

 Webなどでライブカメラなどを実現する場合に最後に撮影した画像を表示したい場合があります。ただ、日付や連番ファイルで保存してしまうと、Web側での処理が大変です。そのような場合、rpicam-stillコマンドでは撮影した画像を特定の名前(パス)でシンボリックリンク(エイリアス)にすることができます。このようにすることでWeb側では常に同じファイル名で最新の撮影画像にアクセスすることができるようになります。
 なお、保存したファイルと同一ディレクトリでないと正しく処理されないので注意してください。(シンボリックリンクが作成されません)

rpicam-still -o ./ --datetime --latest ./latest.jpg --rotation 180 > /dev/null 2>&1

タイムラプス(インターバル)撮影

 次にタイムラプス(インターバル)撮影を行ってみましょう。これは1秒に1枚や15秒に1枚撮影するといった一定間隔で静止画を撮影していくものです。撮影の間隔(ミリ秒)はtimelapseで指定します。何秒間(何ミリ秒間)撮影するかはtimeoutで指定します。
 以下のように指定すると1秒間隔で8秒間撮影されます。保存されるファイル名は4桁の連番になります。保存ファイル名指定の%04dが4桁の連番にする指定なので、これを%02dなどにすることで任意の桁数の連番ファイルにすることができます。

rpicam-still --timeout 8000 --timelapse 1000 -o %04d.jpg --rotation 180 > /dev/null 2>&1

 ファイル名を日時にしたい場合は以下のようにdatetimeオプションを指定します。

rpicam-still --timeout 8000 --timelapse 1000 --datetime --rotation 180 > /dev/null 2>&1

連番ファイルを動画にすることもできます。ffmpegコマンドやAfterEffects/Premiereなどのアプリケーションなどがあります。
動画を撮影したい場合はrpicam-vidコマンドがあります。これについては次回説明します。

著者 仲村次郎
いろいろな事に手を出してみたものの結局身につかず、とりあえず目的の事ができればいいんじゃないかみたいな感じで生きております。