人臉辨識一直是號稱AI應用的熱門(入門)議題~~尤其是幾年前微軟的用照片辨識年紀的推波助瀾下,大家更是樂此不疲~~呵!
既然如此~~那就也玩玩看如何用python來達成人臉辨識及標記的目標吧!
其實這塊之前就結合OpenCV跟dlib這組套件,並串接雲端微軟的年齡、情緒辨識技術,一起玩過整套的~~不過之前沒有記錄下來,時間久了~~也容易忘掉,所以,這次就納入自己整理、分享的議題之一!只是一開始,還是一樣~~先拆解從簡單的應用入手介紹,後續再依序加入其他整合性的應用!
要達成人臉辨識的目標,我們可以借助「dlib」這支相當成熟、易用的套件,結合OpenCV來著手設計!
首先在Windows系統上,要安裝「dlib」套件時,為避免缺乏CMAKE導致安裝失敗的窘境,建議安裝時直接指定「dlib」套件版本:
安裝「dlib」:pip install dlib==19.8.1(個人在win10上可正常安裝無誤)
當然別忘了安裝OpenCV這支影像視覺處理的強大套件:
pip install opencv-python
安裝完成後,就可以開始進行程式設計的部分了~~~
好囉~~又到了直接上程式碼的步驟了:
import dlib
import cv2
# 讀取照片檔
img = cv2.imread('imgs/faceo8.jpg')
# 呼叫 dlib 人臉偵測器
fd = dlib.get_frontal_face_detector()
# 偵測圖檔上的人臉資訊
fs = fd(img, 0)
print(f"偵測到{len(fs)}組人臉資訊")
# 將偵測結果以序列方式取出
for i, f in enumerate(fs):
x1 = f.left()
y1 = f.top()
x2 = f.right()
y2 = f.bottom()
# 以上列四點數據,繪製人臉區域綠色矩形框
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# 顯示結果
cv2.imshow("Face", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
相關程式碼的說明,都標註在其中了!
所以也就不必再贅敘了~~~
執行程式結果如下:
其中最重要的當然就是:第8行~呼叫dlib的人臉偵測函式的部分囉!
fd = dlib.get_frontal_face_detector()
好囉~~這次人臉偵測標示的紀錄就到這告一段落了!
dlib還有個相當強悍的人臉68個特徵偵測標示的訓練模型可供應用,後續再紀錄、分享上來囉!
沒有留言:
張貼留言