備忘録ブログ

個人的な備忘録です。

USBカメラをつかって画像認識に挑戦

USBカメラをつかって画像認識に挑戦

せっかくラズパイのセットアップができたのと、以前購入したUSBカメラがあったので、画像認識的なことをやってみようと思う。
こちらの記事を参考にさせていただきました。
カメラはこちら。

まず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