ラズパイでタイムラプス作り


職場で近くの席にいるスーパーエンジニアと雑談していたときにラズパイで遊ぶ話題になり、
その勢いでうっかりラズパイとカメラモジュールを買ってしまいました。

せっかく買ったから何かやりたいなと、タイムラプスが簡単に作れそうなので挑戦してみることにしました!
手順は以下の通り、ラズパイで完結させてみようと思います。

  1. ラズパイのカメラで定期的に写真を撮影
  2. 写真をつなぎあわせて動画に変換

必要なもの

  • Raspberry Pi 3 Model B(OSセットアップ済み)
  • Raspberry Pi カメラモジュール V2
  • USB電源アダプター 5V/3A 1.5m microUSB
  • microSDカード 32GB
    • 後述の設定にもよるが画像一枚あたり約300〜400KB、合計5GB程にはなるので容量は16GB以上あると安心かもしれません

ラズパイでの撮影準備

手順は公式のドキュメントを参考に進めます。
https://www.raspberrypi.org/documentation/usage/camera/installing.md

カメラモジュールをラズパイに接続

平たいコネクタの部分にカメラモジュールを接続します。
端子の向きに注意して差し込みましょう。

カメラを有効化

接続しただけではまだ使用することができません。
ラズパイを起動し、コンソールから以下のコマンドを実行します。

sudo raspi-config

すると設定画面がコンフィグ画面が表示されるので、
Interfacing Options ─ Camera ─ Yes を選択しましょう。
Finishでコンフィグ画面終了後、再起動すると設定が反映されます。

写真撮影実行

raspistill コマンドのオプションを使うことで一定時間、定期的に写真を撮影することができます。

やはり動きのある画が映えると思いますので、職場の窓から見下ろした道路風景を12時間夜通しで撮影してもらうことにしました。
がんばれ!

rasipistill -w 1280 -h 800 -q 30 -t 43200000 -tl 3000 -o %d.jpg

-w 1280 -h 800 :撮影する写真サイズ
-q 30 :jpg画像の品質(0〜100)
-t 43200000 :トータルの撮影時間・・・43200000ms(12時間)の間撮影
-tl 3000 :撮影間隔・・・3000ms(3秒)ごとに撮影
-o %d.jpg :連番でjpgファイルを出力する

《余談》
カメラモジュールの向きを固定しておくための装置はレゴブロックで作りました。
遊び心が過ぎて不思議な物体になっていますw

撮影結果

翌日確認したところ14402枚の写真が撮影できていました。

次にこれらを動画に変換します。

動画への変換

変換には avconv を使用することにしました。
まずはインストールを行います。

sudo apt install avconv

インストールが完了したら、いよいよ動画変換を実行します。
動画のコマとなる画像の合計枚数は固定のため、フレームレートを上げると動画の長さが短くなります。
今回は1秒当たり20コマの設定にしてみることにしました。
以下のように実行し、しばらく待てば動画が出来上がります。

avconv -r 20 -i %d.jpg -s '1280x800' output.mp4

-r 20 :フレームレート(fps)を指定
-i %d.jpg :連番のjpgファイルを読み込む
-s '1280x800' :出力フレームサイズ
output.mp4 :出力ファイル名

完成したタイムラプス動画