1、人臉圖像採集
- 系統:win10
- 軟件:python3.6+PyCharm
OpenCV(Open source Computer Vision)是一個基於BSD許可發行的跨平臺計算機視覺庫,OpenCV最初是由英特爾公司Gary Bradski領導的團隊開發,第一版於2006年推出。現在由Willow Garage公司維護。
可用於檢測和識別人臉,識別對象,分類視頻中的人爲操作,跟蹤相機移動,跟蹤移動物體,提取物體的3D模型,從立體相機生成3D點雲,將圖像拼接在一起來生成高分辨率的整個場景的圖像,從圖像數據庫中找到相似的圖像,從使用閃光燈拍攝的圖像中去除紅眼,跟蹤眼球運動,識別景物並建立標記等。
目前OpenCV支持多種編程語言,如c++、Python、Java、MATLAB、Ruby等,可在Windows、Linux、Mac OS X、Android、iOS等不同平臺上使用。
OpenCV的Python 官方文檔 。
使用OpenCV打開攝像頭:
import numpy as np
import cv2
# 參數0指的是第一個攝像頭,如果使用第二個攝像頭可以輸入1來選擇
cap = cv2.VideoCapture(0)
while(True):
# 一幀一幀獲取圖片,ret爲布爾變量,frame中的是一幀圖片
ret, frame = cap.read()
# 更改圖片大小,可以加快後面人臉檢測的速度
image = cv2.resize(frame, (640, 480))
# 顯示採集到的畫面,這裏的'frame'是顯示窗口的標題
cv2.imshow('frame',image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 關閉攝像頭
cap.release()
cv2.destroyAllWindows()
2、人臉檢測和人臉特徵提取
Dlib是一種用C ++編程語言編寫的基於BSD許可發行的通用跨平臺開源軟件庫。自從2002年開發以來,Davis King一直是dlib的主要作者。dlib的內容非常豐富,其中涵蓋了數據結構、線性代數、機器學習、圖像處理、數據挖掘、XML和文本分析、數值優化、貝葉斯網絡等方面。在國外,它被廣泛應用於學術領域,包括機器人應用,嵌入式設備和大規模高性能計算環境。雖然由C++寫成,但是它向Python開放了接口,也就是說可以在Python中直接使用它。
Dlib的python 官方文檔
- 人臉檢測
# dlib自帶的人臉檢測器,如果改爲CNN檢測器會更加精確
detector = dlib.get_frontal_face_detector()
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
# 進行人臉檢測
dects = detector(img, 1)
for i, rect in enumerate(dects):
# 讀取人臉區域座標
left, right, top, bottom = rect.left(), rect.right(), rect.top(), rect.bottom()
# 利用opencv中的函數進行畫出人臉方框
cv2.rectangle(img, (left, top), (right, bottom), (255, 0, 0), 2)
cv2.imshow('img', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
- 人臉特徵提取
未完待續……