1. 程式人生 > >畢設-基於人臉識別的教室點名系統(二)

畢設-基於人臉識別的教室點名系統(二)

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()
  • 人臉特徵提取
    未完待續……