【Raspberry Pi】webカメラを接続する方法

Raspberrypiをwebカメラに接続する方法

こんにちは! けい(Twitter)です.

今回は,Raspberry piにwebカメラを接続する方法について,分かりやすく説明していきたいと思います.

今回の動作環境は以下の表で行いましたが,基本どのバージョンでもできると思います.

バージョン
ラズベリーパイOSRaspbian Buster 10
PythonPython 3.7.3

Raspberry piにwebカメラを接続する方法

webカメラをUSBに接続

ラズベリーパイのUSBに,webカメラを接続します.

私は家にあったwebカメラを使いました。

一応最後にネット上でラズパイと接続して動作していたwebカメラをまとめておきます。
まだ購入していない方は検討してみてください。

コマンドで接続を確認

webカメラの接続が正しく行われたかを,コマンドを入力して確認します.
ターミナルで以下のコマンドを入力します.

lsusb

カメラを接続する前後の変化を見てみましょう.

カメラを接続する前

Deviceが001から004まで認識されていました.このとき,USBには何も接続していません.

カメラを接続した後

上の画像を比較すると,Device007が新たに検出されました.これで,認識していることが分かりました.

コマンドで接続を確認:②

ls /dev/video*

このコマンドはビデオデバイスが接続されているか確認するものです.
こちらも,カメラを接続する前後で結果の比較を行います.

カメラを接続する前

/dev/video というようにデバイスが表示されています.

カメラを接続した後

デバイスが2つ増えました.先ほどはなかったvideo0とvideo1が認識されています.webカメラは一つだけ接続しました.

ターミナル上でカメラの動作確認

続いて,カメラの画像をRaspbery piに保存できるかを確認していきます.

pythonでwebカメラの画像を取り込んでもいいんですが,今回は簡単に行うことがモットーなので,ターミナル上で動作確認する方法を紹介します.

これを行うには,webカメラを制御するドライバをインストールする必要があります.
以下のコマンドをターミナル上で入力します.

sudo apt-get install fswebcam

インストールが完了したら,画像を取得してみましょう.

ターミナルで以下のコマンドを入力して,画像を撮影して保存できます.image.jpgの部分は,お好きなファイル名に変更して保存してください.

fswebcam image.jpg

このようにコマンドで表示されます.処理が完了したら,ファイルでimage.jpgを確認します.

撮った画像がこちら↓

ホワイトバランスが最低で,下に□が連続して入っていますが,これで正しく接続していることが確認できます.

ちなみに、オプションで「–no-banner」を入れると下の□が消えます。

発展:Python+Opencvでwebカメラの画像を取得

これまでの記事の内容ではカメラの動作確認をすることができました.

しかし画像の設定を細かくできないため,Opencvを使って動画としても撮影できるかを確認してみましょう.

Opencvをまだインストールしていない人は,インストールに時間がかかるため,時間がある人はやってみて下さい.

Opencvをインストール

OpenCVのインストール作業は少々面倒です。
結構時間がかかると思うので、時間があるときに行ってください。

OpenCVの依存ライブラリを先にインストールします。
下記コマンドをターミナルで実行してください。

sudo apt install libavutil56 libcairo-gobject2 libgtk-3-0 libqtgui4 libpango-1.0-0 libqtcore4 libavcodec58 libcairo2 libswscale5 libtiff5 libqt4-test libatk1.0-0 libavformat58 libgdk-pixbuf2.0-0 libilmbase23 libjasper1 libopenexr23 libpangocairo-1.0-0 libwebp6

最新版のopencvをインストールします。

sudo pip3 install opencv-python

これで通常はインストールが成功すると思います。

しかし、pythonでimportするときにエラーになる場合があるようです。
その場合は下の項目をクリックしてみてください。

「sudo pip3 install opencv-python」というコマンドを実行すると、最新版のOpenCVがインストールされます。

そこで、以前のバージョンを指定してインストールすることで上手くいくことがあるようです。参考

ここのURLから、現在リリースされているopencv-pythonのバージョンを確認することができます。

現在(2021/05/26)の最新版は「4.5.2.52」です。
1つ前のバージョン「4.5.1.48」を指定してインストールしたい場合は、

sudo pip3 install opencv-python==4.5.1.48

を実行します。

pythonコード

以下のコードをpythonの新規ファイルとして保存してください.

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()
    cv2.imshow('frame',frame)

    key = cv2.waitKey(1)

    if key == ord('q'):
        break
    if key == ord('s'):
        path = "photo.jpg"
        cv2.imwrite(path,frame)

cap.release()
cv2.destroyAllWindows()

このpythonファイルを実行して,キーボードで「q」を入力すると終了し,「s」を入力すると画像を保存できます.

先ほどのfswebcamよりも,より鮮明にホワイトバランスも調整された画像が保存できるかと思います.

私が保存した画像がこちら↓

先ほどと同じ画角で撮ったんですが,圧倒的にこっちのほうがきれいにとれていますね!
画像サイズも640×480で保存できました.

最後に:Raspberry Piで使用できるwebカメラ

ネット上でラズパイに接続して動作しているwebカメラを調べました。
webカメラリストを作っておきます.

まだwebカメラを購入していない方は検討してみてください。