第2回:OpenCVを利用した顔認識機能(事前知識)Python
2022年1月19日今回は第2回:Pythonを利用してOpenCVを利用した顔認識機能についてご紹介します。
idleを起動して作業をしていきます。
動画は2回に渡ってお送りします。
操作5:OpenCVを利用して画像を読込する
操作6:画像をグレースケールに変換する
操作7:APIのダウンロードと素材のダウンロード
操作8:顔認識機能のAPIを読込
操作9:四角形を描画
操作10:scaleFactorの調整
<操作5の入力ソース>
import cv2
img=cv2.imread(“OpenCv.png”)
cv2.imshow(‘OpenCV’, img) #画像ファイルを表示
cv2.waitKey(0) #showだけではすぐ画面が消えてしまうため、何かキーが押されるまで待機
cv2.destroyAllWindows() #Windowを削除
つづけて、ソース1の末尾に
cv2.imwrite(‘save.png’, img)
と記載すると、imgのオブジェクトをsave.pngで保存できます。
<操作6の入力ソース>
import cv2
img=cv2.imread(“OpenCv.png”)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #グレースケールに変換する
cv2.imshow(‘OpenCV’, gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
<操作8・操作9の入力ソース>
import cv2
cascade_path = ” C:/Users/user/Desktop/haarcascade_frontalface_default.xml”
image_file =”cv2_test.jpg”
image_path=”./”+image_file
output_path=”./output”+image_file
image=cv2.imread(image_path)
image_gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #モノクロ画像に変換する
cascade=cv2.CascadeClassifier(cascade_path) #利用するAPIのXMLを指定する
#物体認識(顔認識)の実行
#image – CV_8U 型の行列.ここに格納されている画像中から物体が検出されます
#objects – 矩形を要素とするベクトル.それぞれの矩形は,検出した物体を含みます
#scaleFactor – 各画像スケールにおける縮小量を表します
#minNeighbors – 物体候補となる矩形は,最低でもこの数だけの近傍矩形を含む必要があります
#minSize – 物体が取り得る最小サイズ.これよりも小さい物体は無視されますfacerect=cascade.detectMultiScale(image_gray, scaleFactor=1.15, minNeighbors=2, minSize=(100, 100))
#print(facerect)
color=(255,255,255)
if len(facerect) >0:
for rect in facerect:
cv2.rectangle(image,tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]),color,thickness=2)
cv2.imwrite(output_path,image)
テルンのツイッターでも紹介しています。
Twitter:https://twitter.com/pcschooltelln