ラズパイにUSBカメラを接続してOpenCVで画像をキャプチャーした
Contents
ラズパイにUSBカメラ
Raspberry Pi 4Bにロジクールの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のアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
最近のコメント