一般的なWebカメラを使用する

ラズベリーパイ用のカメラモジュールを使用する代わりに、 一般的なUSBのWebカメラを使ってラズベリーパイ上で写真や動画を撮ることができます。

品質や設定の自由度においては一般的なUSBのWebカメラよりも カメラモジュールの方が非常に優れています。

FSWEBCAMをインストールする

最初にfswebcamパッケージをインストールしてください。

sudo apt-get install fswebcam

基本的な使い方

fswebcamコマンドに続いてファイル名を入力すると、 Webカメラを使って写真が撮られ、そのファイル名で保存されます。

fswebcam image.jpg

このコマンドは次のような情報を表示します。

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd4
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'image.jpg'.

デフォルトで小さな解像度になっています。また、タイムスタンプのバナーが表示されています。

解像度を設定する

この例で使っているWebカメラは1280 x 720の解像度を持っているので、 -rフラグを使ってこれから撮る画像の解像度を設定します。

fswebcam -r 1280x720 image2.jpg

このコマンドは次のような情報を表示します。

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 1 extraneous bytes before marker 0xd5
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'image2.jpg'.

これでWebカメラの最大解像度でバナー付きの写真が撮られるようになりました。

バナーを消す

それでは--no-bannerフラグを追加してみましょう。

fswebcam -r 1280x720 --no-banner image3.jpg

このコマンドは次のような情報を表示します。

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to 'image3.jpg'.

これで最大の解像度でバナーなしの写真が撮れました。

悪い写真

USBのWebカメラで、このように偶然にも芸術的な、品質の低い写真が撮れてしまうことがあるかも知れません。

信頼できるWebカメラもあるのですが、このタイプの問題は品質の低いWebカメラを使うと発生する可能性があります。 この問題が継続する場合、システムが最新であることを確認してください。 また、別のWebカメラも試してみても良いですが、 ラズベリーパイのカメラモジュール が最もパフォーマンスが良いでしょう。

Bashスクリプト

Webカメラで写真を撮るBashスクリプトを書くことができます。 下のスクリプトは画像を/home/pi/webcamディレクトリに保存するので、 最初にwebcamフォルダを作っておきましょう。

mkdir webcam

スクリプトを作るには、好きなエディタを開いて、次のコードをサンプルコードを書いてください。

#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H%M")

fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg

このスクリプトは、写真を撮り、ファイル名にタイムスタンプを付けます。 例えばこのスクリプトをwebcam.shとして保存した場合、 最初にこのファイルを実行可能にする必要があります。

chmod +x webcam.sh

それから次のように実行します。

./webcam.sh

これにより、ファイル内のコマンドが実行され、通常の出力を行います。

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '/home/pi/webcam/2013-06-07_2338.jpg'.

CRONを使用したタイムラプス

cronを使うと好きな間隔で写真を撮ることができます。 例えばタイムラプスを撮るために毎分ごとにといった具合です。

まずcronテーブルを開いて編集します。

crontab -e

これにより、どのエディタを使用するか尋ねられるか、もしくはデフォルトのエディタが開きます。 エディタでファイルが開けたら、毎分ごとに写真を撮るように次の1行を追加してください (上のBashスクリプトを参照します)。

* * * * * /home/pi/webcam.sh 2>&1

保存して終了すると、次のメッセージが確認できます。

crontab: installing new crontab

スクリプトがそれぞれの写真を同じファイル名で保存することのないようにしてください。 毎回写真が上書きされてしまいます。

その他の便利なツール

他にも、カメラやWebカメラを使う上で便利なツールがあります。

このページについて

このページはラズベリーパイ財団が権利を保有するRaspberry Pi Documentation五十嵐システムズが日本語訳したものです。
Creative Commons Attribution 4.0 International Licenceのもとで公開されております。
原文はhttps://github.com/raspberrypi/documentationの成果によって作成されています。

なお、このページは2015年6月に翻訳しており、それ以後の更新内容は翻訳に反映していないため、内容が原文とは異なる場合があります。