顔認識ソフトウェア 【Python & OpenCV】

tkinter

Python を使った顔認識ソフトウェアです。OpenCV と tkinter を使っています。
簡単に顔認識をPythonで行うことができます。

環境:
・ Windows 10 パソコン、USB カメラ
・ Anaconda、Python 3、OpenCV をインストールしています。

使い方

① PC に USB カメラを接続しておきます。
② 任意のフォルダを作成し、中に face_recognition1.py 等のファイル名でテキストファイルを作ってください。
③ 下記のサンプルスクリプトを貼りつけて保存してください。
④ path1 のパスを参考に、使用している環境で、OpenCV の “haarcascade_frontalface_default.xml” があるフォルダ(★)を探してください。
見つけたら、★のフォルダのパスに対応するよう path1 の文字列を修正して保存してください。
⑤ Python スクリプトを実行してください。

→ アプリが動作したら、成功です!

カメラのライブ画像が表示されない場合は、または、カメラが複数接続されている場合は、# camera number としている行の番号 1 を 0, 2, 3 などに変更してみて、使用するカメラ番号を設定して下さい。

まとめ

Python を使って、人の顔の検出もできるようになりました。
なお、動作確認をしている USB カメラなどについて、以下の関連リンクにまとめています。関心のある方は、参照してみてください。

関連リンク
・ 【Python】 動作確認済み USB カメラ 【おすすめ】
・ 接続中のカメラ番号を抽出する 【OpenCV & Python】
・ 【Python】 バーコードリーダ 【QRコード読み取り対応!】

サンプルスクリプト face_recognition1.py

#!/usr/bin/env python
# -*- coding: utf8 -*-
import cv2
import tkinter as tk1 
from PIL import Image, ImageTk

def stop1(): 
    global stp1 
    if stp1 == 0: 
        stp1 = 1 
        button1["text"] = "start" 
    else: 
        stp1 = 0 
        button1["text"] = "stop" 

def live_view1(): 
    global frame1 
    global canvas1 
    global img1 
    global stp1 
    global cascade1 
    if stp1 == 0: 
        result0, img0 = cap1.read()
        if result0:
            img1 = cv2.cvtColor( img0, cv2.COLOR_BGR2RGB ) 
            gray1 = cv2.cvtColor(img0, cv2.COLOR_RGB2GRAY ) 
            faces1 = cascade1.detectMultiScale( gray1 ) 
            for x1, y1, w1, h1 in faces1: 
                cv2.rectangle( img1, (x1, y1), (x1+w1, y1+h1), (0,255,0), 1) 
            img1 = ImageTk.PhotoImage( image= Image.fromarray( img1 ) ) 
            canvas1.create_image( 0, 0, anchor=tk1.NW, image=img1 ) 
    frame1.after( 500, live_view1 ) 

frame1 = tk1.Tk()
frame1.title(u"face_recognition v0.1")
frame1.geometry("680x550")

button1 = tk1.Button( frame1, text='stop', command=stop1 )
button1.place(x=560, y=10, width=100)

cap1 = cv2.VideoCapture( 1, cv2.CAP_DSHOW )  # camera number 

canvas1 = tk1.Canvas( frame1, width=cap1.get( cv2.CAP_PROP_FRAME_WIDTH ), height=cap1.get( cv2.CAP_PROP_FRAME_HEIGHT ), bg='white' )
canvas1.place(x=20, y=50) 

path1 = "C:\\Users\\…\\Anaconda3\\pkgs\\libopencv-4.5.0-py37_3\\Library\\etc\\haarcascades\\" 
file1 = path1 + "haarcascade_frontalface_default.xml"
cascade1 = cv2.CascadeClassifier( file1 )

img1 = 0 
stp1 = 0 

live_view1() 

frame1.mainloop()
cap1.release()

cv2.destroyAllWindows() 
タイトルとURLをコピーしました