Raspberry Piで定点観察してみた

やること

Raspberry Piを使って定点撮影した画像をgifアニメーションにする。

完成イメージ

種から育てているパキポディウム・グラキリスの定点観測gif
成長の遅い植物なので撮影前はあまり動かないと思っていたが、gifアニメーションにすると意外と成長していた。

2022/06/13-2022/11/06の定点観測gif


使うもの

Raspberry Pi3

家に余っていたため利用。
Raspberry Pi Zeroなどの更にスペックが低いものでも実施可能。
初期設定などに関しては今回は省略する。

Raspberry Pi3


webカメラ

余っていたため利用。できるかぎり画質のいいものが望ましいがどのようなwebカメラでも問題ない。
C980GRはType Cでの接続になるため、Raspberry Pi3に接続するためには変換が必要。

ロジクール C980GR

Type C to Type A変換器

webカメラがTypeCのため利用。
webカメラのケーブルがType Aの場合はType Cを接続できるため不要。

Rampow USB Type C (メス) to USB 3.0 (オス) 変換アダプタ

撮影設定

FSWEBCAMのインストール

下記のコマンドでfswebcamをRaspberry Piにインストールする。

$ sudo apt-get install fswebcam

写真の撮影

$ fswebcam -f 1 -S 20 --no-banner pic1.jpg

撮影できた画像

寒くなり落葉が完了したパキポディウム・グラキリス
ピントがなかなか合わない場合などは背景を白や黒の単色にすると少しピントがあいやすくなる。

pic1.jpg

fswebcamオプションの補足

今回指定しているfswebcamのオプションは以下。環境に合わせて値をいじることで、きれいな画像を撮影することができる。

-f , 露光時間、短いほどブレが少ない
-S, 撮影せずに露光を行う。カメラの種類によってはオートフォーカスや自動露光を行う。
--no-banner, 撮影日付のバナーを消す

定期撮影するためのスクリプトの作成

任意のフォルダに下記のスクリプトを作成する。
撮影された画像を/home/pi/Pictures配下に日付をつけて保存するスクリプト
plant_cap.sh

today=`date "+%Y%m%d"`
echo ${today}

file_name=${today}"image.jpg"
echo $file_name

sudo fswebcam -f 1 -S 20 --no-banner /home/pi/Pictures/$file_name

今日の日付がついた写真が/home/pi/Picturesに保存される。

plant_cap.shの動作確認

定期実行するためのcronの登録

cronとは、設定した時間に指定されたプログラムを定期実行してくれるデーモン。今回は毎日12時に撮影するようにcronにplant_cap.shを登録する。
cronファイルをエディットモードで起動

$ crontab -e

開いたファイルの一番最後に下記の行を追加しcronに登録。

00 12 * * * /bin/bash /home/pi/plant_cap.sh

撮影したファイルでgifアニメーションを作成

ある程度の日数撮影を進めて、画像が溜まってきたタイミングでgif画像を作成する。
今回は2022/06/13-2022/11/06の期間で撮影を行った画像を元にgifアニメーションを作成する。

Pictures配下の画像一覧

convertコマンドのインストール

convertコマンドは、ImageMagickというパッケージに含まれる画像変換をおこなうことができるコマンド。gifの作成以外にも、画像のフォーマット変換、リサイズ、切り出しなどをおこなうことができる。

$ sudo apt-get install imagemagick

画像をgifアニメーションに変換

Pictures配下にある.jpgを指定して変換をおこなう。

$ convert -delay 10 -loop 0 ./Pictures/*.jpg image.gif

変換したgifアニメーション

パキポディウム・グラキリスが休眠を明けてからまた休眠するまでの成長の様子を1つのgifアニメーションにすることができた。

2022/06/13-2022/11/06の定点観測gif

convertオプションの補足

convertオプションを変更することで、画像の切り替わりのタイミングなどを変更することができる。

-delay, 画像の切り替わる時間(単位:1/100秒)
-loop,  ループする回数(0を指定した場合は無制限)


この記事が気に入ったらサポートをしてみませんか?