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

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()
  • 人臉特徵提取
    未完待續……
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章