見出し画像

[Python]カメラ映像にテキストを表示して、本格的な物体検出を実現する[OpenCV]

OpenCVで顔検出が簡単にできる。

詳細は以前の記事などもご参照ください。オリジナルのデータセットを用いれば、特定の人物だけを検出することができることも魅力的でした。

putText関数でテキストを表示させる

cv2のputText関数を使うことで画面に文字を出力することができます。引数にフォントの種類、カラー、文字の大きさなどを指定できます。

検出した顔画像にテキストを表示させてみる。

下記のサイトも参考にしつつ、検出画像に「face」というキャプションを組み込んでみます。今回は顔のみの検出としています。

putText関数をコードの中に組み込みます。

import cv2

cascade_path = "haarcascade_frontalface_alt.xml"

cascade = cv2.CascadeClassifier(cascade_path) 

color = (255, 255, 255) #白 

src=cv2.imread('lena.png')

src_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

facerect = cascade.detectMultiScale(src_gray)

for rect in facerect:
# 検出した顔を囲む矩形の作成
    cv2.rectangle(src,tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), color, thickness=2)
 
    cv2.putText(src,
                text='face',
                org=(rect[0],rect[1]),
                fontFace=cv2.FONT_HERSHEY_SIMPLEX,
                fontScale=1.0,
                color=(0, 255, 0),
                thickness=2,
                lineType=cv2.LINE_4)  

 # 表示
cv2.imwrite('./sample_after.png', src)

この部分が今回、組み込んだコードです。表示するテキスト名、テキストの位置、フォントの指定などを行っています。

    cv2.putText(src,
                text='face',
                org=(rect[0],rect[1]),
                fontFace=cv2.FONT_HERSHEY_SIMPLEX,
                fontScale=1.0,
                color=(0, 255, 0),
                thickness=2,
                lineType=cv2.LINE_4)  

実際に表示させた画像はこちら

本格的に顔検出ができています

検出枠に加えて、文字で検出名を表示させることができました。ちょっと本格的な感じですね。
openCVだけでできるので、とても簡単に顔検出ができました。


この記事が気に入ったらサポートをしてみませんか?