LoginSignup
6
11

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

Last updated at Posted at 2019-05-24

この記事は?

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

環境

使用する機器

  • Raspberry Pi (機種は問わず)
    • OSは最新版(stretch)を使用します
  • Webカメラ
    • zoomするときに使うような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 を実行して、カメラ(らしきもの)が認識されていることを確認します
下記例では KYE Systems Corp. (Mouse Systems) Genius WideCam F100 が認識されているカメラです。

$ 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 を実行し、カメラのデバイスが存在することを確認します。
下記例ではUSBカメラが /dev/video0 として認識されています。

$ v4l2-ctl --list-devices
USB_Camera: USB_Camera (usb-3f980000.usb-1.5):
        /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 は、カメラをオープンしてから指定の秒数待ってから撮影を行う。
...という意味です。

6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11