ラズパイにUSBカメラを接続してOpenCVで画像をキャプチャーした | そう備忘録

ラズパイにUSBカメラを接続してOpenCVで画像をキャプチャーした

ラズパイにUSBカメラ

Raspberry Pi 4BにロジクールのUSBカメラを接続して映像をキャプチャするプログラムを試した時の備忘録。

ラズパイにUSBカメラを接続

ラズパイにカメラを接続する時はいつもは下記の様なラズパイ用カメラモジュールを使用していた。

接続方法はカメラのフレックスケーブルをラズパイの基板上のCSI(Camera Serial Interface)コネクタに接続する。

ラズパイ用カメラの本体への接続方法と試し撮りなどの操作については以前の記事を参照して欲しい。

今回は下記のロジクール C270WEBカメラをUSB接続をしてPythonのプログラムから映像をキャプチャしてみた。

環境

試した環境は以下の通り。

OS

Raspberry Pi OS(32-bit)Released 2021-01-11

ラズパイ本体

Raspberry Pi 4B

カメラ

ロジクールWEBウェブカメラ C270n

事前準備

Pythonのデフォルト

Pythonのデフォルトをpython 3.xに変更しておく。

詳細な手順については以前の「RaspberryPiでPythonのデフォルトをPython2.7からPython3に変更する」の記事を参照して欲しい。

OpenCVのインストール

以下のコマンドでラズパイに画像を扱うライブラリー、OpenCV(cv2)をインストールする。

sudo pip3 install opencv-python
sudo apt-get install libatlas3-base

インストールの手順の詳細ついては過去記事の「ラズパイにOpenCV(cv2)をインストールした」を参照して欲しい。

プログラム

プログラムのソースコードは以下の通り。

capture.py のファイル名で保存している。

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 24 20:42:59 2021

・Raspberry Pi にUSB接続したカメラの映像をキャプチャーする

@author: Souichirou Kikuchi
"""

import cv2

#main
if __name__ == '__main__':
    try:
        capture = cv2.VideoCapture(0) # /dev/video*
        while(capture.isOpened()): # Open
            retval, image = capture.read() # キャプチャー
            if retval is False:
                raise IOError
            text = 'WIDTH={:.0f} HEIGHT={:.0f} FPS={:.0f}'.format(capture.get(cv2.CAP_PROP_FRAME_WIDTH),capture.get(cv2.CAP_PROP_FRAME_HEIGHT),capture.get(cv2.CAP_PROP_FPS))
            # 元Image,文字列,位置,フォント,サイズ(スケール係数),色,太さ,ラインの種類
            cv2.putText(image, text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 1, 4)
            cv2.imshow('Frame', image) # 表示
            cv2.waitKey(1) # 1ミリ秒キーボードの入力を待ち受ける
    except KeyboardInterrupt:
        pass
    finally:
        capture.release () # VideoCaptureのClose
        cv2.destroyAllWindows() # Window削除

実行

適当なディレクトリにプログラムソースをコピーしてLXTerminalから以下のコマンドで実行する。

python capture.py

実行結果

新しいWindowが開いてカメラに写った映像が表示される。

Window上部に幅、高さ、FPSを表示している。

実行結果

以上で今回の記事は終了とする。

最後に

この記事が何処かで誰かの役に立つことを願っている。

尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。