Python×医療事務(×トロント)

#医療 / #医療事務 / #IT / #トロント / #歯科助手 / #のんびり / #備忘録 / #趣味

OpenCVによる顔認識

https://aiacademy.jp/texts/show/?id=135&context=subject-images

 

コマンドorターミナルにて

python

 

>>>  が出てきたら

 

import cv2  と打つ

 

exit()で終了

 

対象の画像を予め 「 test.jpg」で対象フォルダに保存しておく

f:id:chocolate22554:20210307201607p:plain

私の場合このようなフォルダ名をつけた

f:id:chocolate22554:20210307201700p:plain



そして下記を実行しようとしたが出来ない

wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt.xml

 

 

qiita.com

コマンドorターミナル にて

install wget

 

 

f:id:chocolate22554:20210307195135p:plain

⇑上では無理だった

 

エラー内容は下記↓

f:id:chocolate22554:20210307195746p:plain

 

↓こちらでチャレンジ

Mac - wgetコマンドをインストール(使えるようにする) - 開発メモ - Webkaru

コマンドorターミナル にて

brew install wget

 

↓Homebrewのアップデートが何故か始まった・・

f:id:chocolate22554:20210307195926p:plain

 

↓errorが出ている気もするがアップデートが来ていた?ようでアップデート&ダウンロードが始まった

f:id:chocolate22554:20210307200027p:plain

f:id:chocolate22554:20210307200042p:plain

 

xmlファイルのダウンロード

コマンドorターミナル にて実行

wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt.xml

 

f:id:chocolate22554:20210307201501p:plain

 

今度は成功! Homebrewのアップデートがされていなかったからの模様?

 

顔認識プログラムの実行

text editorにて下記コードを作成

 

import cv2

# カスケードパスは各々のパスに必ず変更してください。
# 次のxmlファイルを探してそのファイルがあるパスを指定してください。 haarcascade_frontalface_alt.xml
# cascade_path = "/Users/cyberbrain/Desktop/haarcascade_frontalface_alt.xml"
# cascade_path = "/usr/local/opt/opencv/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"

# Google Colabで実行の場合
cascade_path = './haarcascade_frontalface_alt.xml'

image_path = "test.jpg"
color = (255, 255, 255) # 白

#ファイル読み込み
image = cv2.imread(image_path)
#グレースケール変換
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)


#カスケード分類器の特徴量を取得する
cascade = cv2.CascadeClassifier(cascade_path)
# 顔認識の実行
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

print("face rectangle")
print(facerect) # 検出した顔の座標の出力

if len(facerect) > 0:
#検出した顔を囲む矩形の作成
for rect in facerect:
# thicknessは 線や円などの太さです。デフォルト値は1ですが、値を大きくする事で太くなります。
# 例えば円などの図形に対し -1 が指定された場合,そのオブジェクトは塗りつぶされます。
cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness=2)
# 下記のコードと同じ意味です。
# cv2.rectangle(image, (186, 98),(280, 192),(255,255,255), thickness=2)

#認識結果の保存
cv2.imwrite("detected.jpg", image)

 

 

======

 

 

今回 「kao」というドキュメント?名にした

コマンドorターミナル にて  「python  kao 」と実行

f:id:chocolate22554:20210307202050p:plain

フォルダに「detected.jpg」という名前で保存され 顔部分が□で囲まれている

f:id:chocolate22554:20210307202135p:plain