![見出し画像](https://assets.st-note.com/production/uploads/images/77013184/rectangle_large_type_2_4a09c98e2cbec1a7717fff8871d0b70f.png?width=1200)
Photo by
golchiki
[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)
実際に表示させた画像はこちら
![](https://assets.st-note.com/img/1650725601447-ALyqSNhpMV.png)
検出枠に加えて、文字で検出名を表示させることができました。ちょっと本格的な感じですね。
openCVだけでできるので、とても簡単に顔検出ができました。