テレビ会議用に持っているUSBのWebカメラがあるのに、Raspberry Piのカメラモジュールを買うのはもったいないと思いRaspberry PiでWebカメラを使った写真撮影に挑戦してみました。
Raspberry Piに市販のWebカメラを接続する方法と写真撮影する方法を紹介します。
今回の動作環境は下記になります。
・Raspberry Pi 4 Model B (OS:Raspbian Buster 10)
・Webカメラ(Logicool)
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
USBのWebカメラを接続する

Raspberry PiのUSBポートにWebカメラを接続します。
今回は普段からテレビ会議等で使用しているWebカメラを使用しました。安価なWebカメラでも撮影することは十分でした。
Raspberry Piのカメラを有効を確認

Raspberry Piのカメラを有効にする方法を紹介します。GUI上での操作とコマンドからの操作を両方紹介しますので、好きな方で設定ください。
GUIでカメラを有効にする
「アプリケーションメニュー」→「設定」→「Raspberry Piの設定」を開く

「インターフェイス」→ カメラを「有効」にする

「OK」をクリック
コマンドでカメラを有効にする
ターミナルを起動しコマンドラインに下記を実行
$ sudo raspi-config
設定ツールのraspi-configが起動します。
「3 Interface Options」を選択し「Enter」を押下

「P1 Camera」を選択し「Enter」を押下

「はい」を選択し「Enter」を押下

Webカメラの接続確認

Raspberry PiにWebカメラを接続接続する前後の挙動をターミナルで確認します。
ターミナルを起動し、コマンドラインにかきを入力します。
$ lsusb
カメラ接続前
$ lsusb # Webカメラ接続前
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
カメラ接続後
$ lsusb # Webカメラ接続後
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 1b17:0211
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Webカメラを接続したことで新たにDevice 005が追加されました。これでRaspberry PiがWebカメラを認識していることが確認できました。
Webカメラで撮影する

Webカメラの接続確認までできたので、最後にWebカメラで写真撮影をします。
Pythonを使って撮影するプログラムを書いてもいいですが、OpenCVのインストールなど色々と面倒な作業があります。
今回はコマンドラインで簡単に撮影することができるfswebcamを使った方法を紹介します。
・fswebcamをインストール
・fswebcamコマンドで撮影する
fswebcamをインストール
ターミナルを起動し、コマンドラインに下記を入力します。
$ sudo apt-get install fswebcam
インストールが完了したら
fswebcamコマンドで撮影する
コマンドラインに下記を入力します。
$ fswebcam test.jpg
fswebcam [ファイル名].jpgという形で入力します。今回はtestとしていますが、お好きなファイル名を指定ください。コマンドを実行すると下記のようになります。
$ fswebcam test.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 640x480.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'test.jpg'.
ファイルを開いて確認してみます。

なんだか全体的に暗い感じがしますので画像を明るくするために-F 50と画像の下部に表示される□のマークを消す--no-bannerのオプションをつけて実行します。
fswebcam --no-banner -F 50 test.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 640x480.
--- Capturing 50 frames...
Captured 50 frames in 1.96 seconds. (25 fps)
--- Processing captured image...
Disabling banner.
Writing JPEG image to 'test.jpg'.

良い感じに撮影できました!
まとめ

今回はRaspberry PiにWebカメラで接続して写真撮影を実践してみました。深い知識は全く要らずで簡単にWebカメラで写真を撮ることができました。
Raspberry PiとWebカメラを使った監視カメラに挑戦してみたいと思います。


コメント