RaspberryPiとUSBWebカメラでタイムラプス
最近(ちょっと前だけど)、RaspberryPi2(以降 ラズパイ)なるものが発売されました。というわけで(?)RaspberryPi熱が再燃しました。・・・・・・といっても、今回使うのは、旧ラズパイのB+バージョンです。そして、使うカメラは専用モジュールではなく、ロジクールの普通のUSBで接続するWebカメラです。
というわけで何をしようかと思っていたのですが、なんか最近(主にTVで)タイムラプスがはやっているようなので、これにしましたとさ。
ラズパイ: Raspberry pi 1 B+
OS:Raspbian
Webカメラ:型番不明だけど、5年前くらいの
説明の前に、注意事項ですが、今回はRaspbianのインストールやIPアドレス、SSHの設定は省きます。設定しなくても液晶とか使えば大丈夫です。
1.Webカメラの接続
では、Webカメラを接続してラズパイを起動します。以下のコマンドでそれっぽいものが出れば、大丈夫のはずです。
1 |
$ lsusb |
2.コマンドから撮影ができるかを確認
まずは、以下のコマンドで撮影に必要なものをインストールします。
1 |
$ sudo apt-get install fswebcam |
次に、以下のコマンドで、撮影できることを確認します。
1 |
$ fswebcam -F 10 ./tmp.jpg |
このコマンドにより、カレントディレクトリ(現在のディレクトリ)にtmp.jpgという画像が出力されていると思います。ちなみに、オプションとして-rを渡すことで、画像サイズを変更したりできます。
3.シェルスクリプトの作成
では、次にcronに渡すとき用のシェルスクリプト(名前はtake.sh)を書いていきます。今回は「年月日時間秒」を画像名にして撮影を行うように記述します。・・・・・・といっても以下の3行になります。
1 2 3 |
#!/bin/bash FILENAME=`date +%Y%m%d%H%M` fswebcam -r 1280x1024 --line-colour '#FF000000' --banner-colour '#FF000000' -F 10 /home/pi/Desktop/img/$FILENAME.jpg |
また、今回は、撮影した画像をデスクトップの「img」というディレクトリに保存しますので、作っておいてください。GUIでやっても結構ですが、以下のコマンドでもできます。
1 |
$ mkdir /home/pi/Desktop/img |
次に、このシェルに実行権限を与えといてください。パーミッションは744とかでいいかと(めんどくさいので自分は777にしてますが・・・)。以下のコマンドでどうぞ。
1 |
$ chmod 777 take.sh |
次に、このシェルが正しく動作するかを確認してください。
1 |
$ ./take.sh |
4.cronの設定
まずは、cronを起動します(デフォルトで動いていると思いますが)。
1 |
$ sudo /etc/init.d/cron start |
ちなみに、動作しているかの確認は以下のコマンドで行えます。片方は、必要なもののインストールなので、必要に応じてどうぞ。
1 2 |
$ sudo apt-get install chkconfig $ sudo chkconfig cron |
次に、cronの設定を行います。設定ファイルは以下のコマンドで開くことができます。
1 |
$ crontab -e |
今回は、2分おきの画像からタイムラプスを行うので、記述は以下のようになります。
1 |
*/2 * * * * /home/pi/Desktop/take.sh |
これを、最下行にでも記述してください。ちなみに「/home/pi/Desktop/take.sh」の箇所は、自分のシェルスクリプトがあるところへの絶対パスで記述してください。
これで、2分おきに実行されるはずです。もし実行されなければ、以下のコマンドでエラーを見てください。「No module ・・・」とか出力されていれば、適宜インストールしてください。
1 |
$ tail /var/log/syslog -n 10 |
5.画像が集まるまで待つ
必要な分の画像が集まるまで待ってください。
ちなみに今回は、朝から日が落ちるまで撮影しました。
6.撮った画像を動画にする
いよいよ最後です。ここまで集めた画像たちから動画を作成します。まずは、必要なもののインストールです。
1 |
$ sudo apt-get install mencoder |
次に、動画を作成する際に渡す画像名のリストを作成します。と一緒に画像から動画を作成します。
1 2 |
$ ls *.jpg > stills.txt $ mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o tlcam.avi -mf type=jpeg:fps=24 mf://@stills.txt |
枚数が枚数だけに、ちょっと時間がかかりますが、これにて終了です。
7.動画のDL
SCPが使えるなら、SCPでダウンロードすることができます。それ以外の人は、Dropboxなりメール添付なりUSBメモリなどを使って移してください。
方法は、メニューの「ファイル」→「SSH SCP」を選択し、画面下部の「From」に動画の絶対パスを、「To」にはダウンロード先を入力します。(ウィンドウ上部は空白でOK)その後Receiveボタンを押しせばダウンロードできます。
8.できた動画をみてみる
最後に動画を再生してみてください。
これにて終了です。お疲れ様でした。
「[Raspberry Pi]決まった時間に処理する」
http://make.bcde.jp/category/35/
ディスカッション
ピンバック & トラックバック一覧
[…] 溜まってきたら消す、でも良さそう。 次はそのシェルを自動実行させる。 RaspberryPiとUSBWebカメラでタイムラプス 上記サイトの「4.cronの設定」を参考に設定。 cronの設定方法 cronについて […]