7
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Organization

Raspberry Pi と安価なWebカメラで静止画を撮影する

この記事は?

Raspberry Pi には純正のカメラモジュールがありますが、微妙にお値段高いですよね。
USB接続のWebカメラのほうが安価ですし、入手性もいいですし、それにRaspberry Pi以外の機械にも流用が効くので、USBカメラのほうが便利な気がします。
ということで、今回はUSB接続の安価なWebカメラを使用して静止画を撮影しよう、と言うシンプルな内容です。

環境

使用する機器

  • Raspberry Pi (機種は問わず)
    • OSは最新版(stretch)を使用します
  • Webカメラ
    • skypeするときに使うようなUSB接続のWebカメラであればなんでも大丈夫だと思いますが、今回は Buffalo BSW200MBK を使用します。実売価格2,000円くらいです。

事前準備

  • Raspberry Pi にOSをインストールします。
  • とりあえず sudo apt-get update sudo apt-get upgrade しておきます
  • Raspberry Pi のUSBポートにWebカメラを接続します

追加でパッケージをインストール

今回使用するパッケージを追加でインストールしておきます。

$ sudo apt-get install v4l-utils fswebcam

カメラの接続確認

lsusb を実行して、カメラ(らしきもの)が認識されていることを確認します

$ lsusb
Bus 001 Device 005: ID 0458:708c KYE Systems Corp. (Mouse Systems) Genius WideCam F100   ←これがカメラです
Bus 001 Device 004: ID 8086:0808 Intel Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

v4l2-ctl --list-devices を実行し、カメラのデバイスが存在することを確認します。

$ v4l2-ctl --list-devices
USB_Camera: USB_Camera (usb-3f980000.usb-1.5):
        /dev/video0                            ←USBカメラが /dev/video0 として認識されています

実際に試してみる

静止画を撮影する

静止画の撮影は fswebcam コマンドを実行します。コマンド一発でOKです。

$ fswebcam -r 1920x1080 hoge.jpg

撮影した静止画が hoge.jpg として保存されます。

上記コマンドで撮影できない場合

上記コマンドで撮影したつもりが、真っ黒・真っ白な画像になってしまう場合があります。
高級なカメラはオートフォーカスや絞り自動調整機能が付いていて、fswebcam によってカメラが起動されるタイミングで調整が始まります。この自動調整が終わる前に画像を取得してしまうのが原因のようです。
そのような場合は、-S -D パラメータで調整します。

$ man fswebcam
-----(中略)-----
       -S, --skip <number>
              Set the number of frames to skip. These frames will be captured but won't  be
              use.  Use this option if your camera sends some bad or corrupt frames when it
              first starts capturing.

              Default is "0".

       -D, --delay <delay>
              Inserts a delay after the source or device has been opened  and  initialised,
              and  before the capture begins. Some devices need this delay to let the image
              settle after a setting has changed. The delay time is specified in seconds.
-----(中略)-----

-S --skip は、指定の回数だけ空撮影してから本撮影を行う。
-D --delay は、カメラをオープンしてから指定の秒数待ってから撮影を行う。
...という意味です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
7
Help us understand the problem. What are the problem?