畢設-基於人臉識別的教室點名系統(二)
阿新 • • 發佈:2019-02-17
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自帶的人臉檢測器,如果改為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()
- 人臉特徵提取
未完待續……