fswebcam - コマンドで画像をキャプチャする方法
以前は Webcam は、Skype 等のビデオチャットなどで活躍していましたが、最近はもう少し応用が増えてきました。
手軽に入手可能な Arduino (特に Arduino Yun) などのオープンソースハードウェアに Linux が搭載され、PC 以外のデバイスでもウェブカムと接続することで、 セキュリティカメラの実装が簡単にできたりします。
ここではそうした応用を念頭において、コマンドからウェブカムの画像を取得する方法を説明します。
USB 接続されるウェブカムの多くでは、UVC (USB Video Class) がサポートされています。
Linux の UVC プロジェクトでは、UVC 互換デバイスに対してデバイスドライバーなどの必要なコンポーネントやソフトウェアを提供することを目指しています。
また Video 4 Linux version 2 (V4L2) カーネルドライバーや API の提供もプロジェクトスコープに含まれています。
さて、要は UVC 互換を謳うウェブカムは、ソフトウェアから操作する環境が揃っています。
ここで紹介する fswebcam はそうしたソフトウェアのひとつです。次のコマンドでインストール可能です。
$sudo apt-get update $sudo apt-get install fswebcam
JPEG 画像を取得するには次のようにします。オプションは適当に変えてください。
$fswebcam -i 0 -d v4l2:/dev/video0 -r 640x480 --jpeg 85 test.jpg
シェルスクリプトなら例えば foo.sh として、次のようにすることでファイル名の重複をたぶん避けることができると思われます。
foo.sh を次のようにして・・・
TIMESTAMP=$( date +"%Y-%m-%d_%T_%N" )
fswebcam -d v4l2:/dev/video1 -i 0 -r 640x480 --jpeg 85 --title Hello /home/hanako/$TIMESTAMP.jpg
実行可能なようにパーミッションを設定します。
$chmod +x foo.sh