USBカメラをつかって画像認識に挑戦
USBカメラをつかって画像認識に挑戦
せっかくラズパイのセットアップができたのと、以前購入したUSBカメラがあったので、画像認識的なことをやってみようと思う。
こちらの記事を参考にさせていただきました。
カメラはこちら。
ロジクール ウェブカメラ C270n ブラック HD 720P ウェブカム ストリーミング 小型 シンプル設計 国内正規品 2年間メーカー保証
- 出版社/メーカー: Logicool(ロジクール)
- 発売日: 2019/04/25
- メディア: Personal Computers
- この商品を含むブログを見る
まずUSBカメラをラズパイのUSBポートにぶっさして、ちゃんと認識されているかを確認。
pi@raspberrypi:~$ lsusb Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270 Bus 001 Device 006: ID 05af:8366 Jing-Mold Enterprise Co., Ltd Bus 001 Device 005: ID 046d:c077 Logitech, Inc. M105 Optical Mouse Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub 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
一番上のがカメラっぽい。認識されてます。
openCVのインストール
pi@raspberrypi:~$ sudo apt-get install libopencv-dev pi@raspberrypi:~$ sudo apt-get install python-opencv
guvcviewというアプリケーションをインストール
pi@raspberrypi:~$ sudo apt-get install guvcview
usbカメラから画像を取り込んで、顔を認識するプログラムを書く(参考サイトのまんまです、、、)
pi@raspberrypi:~$ sudo vim capture.py
# -*- coding: utf-8 -*- import cv2 if __name__=="__main__": #haar-like特徴分類器のファイルの読み込み。 face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml') #USBカメラで画像を取得する capture = cv2.VideoCapture(0) rtn, frame = capture.read() if(rtn==True): cv2.imwrite("capture.jpg", frame) #画像ファイルをグレースケールに変換する gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #顔を検知する faces = face_cascade.detectMultiScale(gray) for rect in faces: #検出した顔を四角で囲む (rect[*]:0=x, 1=y, 2=width, 3=height) color = (0, 255, 0) thickness = 2 cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness) #画像ファイルを保存する cv2.imwrite("capture_output.jpg", frame) #終了処理 capture.release() cv2.destroyAllWindows()
vimが入ってなかったのでインストール
この記事を参考にしました。
pi@raspberrypi:~$ sudo apt-get install vim #設定 pi@raspberrypi:~$ sudo vi /etc/vim/vimrc
下記がコメントアウトされているので、それを有効にします。
シンタックスハイライトがオンになります。
syntax on