(2022-05-19 初稿)
はじめに
職場でタイムラプス写真を撮る必要があり、デジカメやアクションカメラを検討したが、使い勝手が良いものが無くて、Raspberry Pi(以下 ラズパイ)に市販のWebカメラを接続して撮ることにした。
筆者の撮影は、例えば「昼間は1時間おきに撮影し、夜は暗いので撮影しない」、「平日は、短い間隔で撮影し、土日は長い間隔で写す」等と気まぐれなのである。筆者には、crontabぐらいしか思いつかなかったので、結局ラズパイを利用することにした。
2〜3日前から使い始めたばかりなので、単なるリンク集の記事になってしまいそうだ。^^;
ラズパイにWebカメラを接続して写真を撮る
筆者が利用したWebカメラは、ロジクールのc270nとエレコムのUCAM-C820ABBKである。
ラズパイにWebカメラを接続し、認識できたかlsusbコマンドで確認する。
lsusb (関係部分のみ抜粋) Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270 Bus 001 Device 005: ID 1bcf:28c4 Sunplus Innovation Technology Inc. FHD Camera Microphone
写真を撮るためにはfswebcamをインストールする必要がある。
sudo apt install fswebcam
以下のようにfswebcamで、写真を撮ることができる。
fswebcam image.jpg
fswebcamの使い方は、man fswebcamで見ることができるが、デフォルトの解像度は 384x288ととても小さいので、以下のように解像度を指定して撮る方が良い。
fswebcam -r 800x600 image.jpg
以下のページでは、-F(フレーム)と-S(スキップ) オプションを変化させて撮影し、ブレずにきれいにピントが合うと報告があった。
具体的には、 -F 1 -S 10とのことだが、カメラによって異なるので、各自テストして欲しい。
ラズパイに複数台のカメラをつなぐ
ラズパイには4つのUSBポートがあるので、複数台のWebカメラを接続できる。
ただし、複数のWebカメラを接続すると、どれがどれだかわからなくなる。^^;
そこで、以下のコマンドをインストールする。
sudo apt install v4l-utils
詳細は、以下のサイトを参照のこと。
以下のコマンドで、接続しているカメラのリストを取得できる。
v4l2-ctl --list-devices (関係部分ののみ) FHD Camera Microphone: FHD Came (usb-3f980000.usb-1.1.2): /dev/video0 /dev/video1 /dev/media3 UVC Camera (046d:0825) (usb-3f980000.usb-1.1.3): /dev/video2 /dev/video3 /dev/media4
筆者の試した範囲では、最初に接続したWebカメラが /dev/video0 になり、次に接続したWebカメラが /dev/video2 になるようである。
Webカメラ(デバイス)と解像度を指定して、写真を撮るのは以下のとおりである。
fswebcam -d /dev/video2 -r 1920x1080 image.jpg
ビデオキャプチャの設定の確認
$ v4l2-ctl -V Format Video Capture: Width/Height : 1920/1080 Pixel Format : 'MJPG' (Motion-JPEG) Field : None Bytes per Line : 0 Size Image : 4147200 Colorspace : sRGB Transfer Function : Rec. 709 YCbCr/HSV Encoding: ITU-R 601 Quantization : Default (maps to Full Range) Flags : $ v4l2-ctl -V Format Video Capture: Width/Height : 640/480 Pixel Format : 'YUYV' (YUYV 4:2:2) Field : None Bytes per Line : 1280 Size Image : 614400 Colorspace : sRGB Transfer Function : Rec. 709 YCbCr/HSV Encoding: ITU-R 601 Quantization : Default (maps to Limited Range) Flags :
例えば、キャプチャーするサイズを指定する場合は以下のようにする。
v4l2-ctl -v width=1280,height=720
その他も機能があるが、詳細は上記サイトを参照のこと。
VLCメディアプレーヤーで表示してみる
VLCメディアプレーヤ等で、キャプチャすることができる。
VLCメディアプレーヤを起動後、メニューの「メディア(M)」、「キャプチャーデバイスを選択(Ctrl+C)」を選択し、「/dev/video0」または「/dev/video2」を選択すれば下図のとおりキャプチャできる。
皆さんの参考になれば…