1. 程式人生 > >dlib 人臉檢測

dlib 人臉檢測

採用經典的梯度方向直方圖(HOG特徵)提取+線性分類器+影象金字塔+滑動視窗的人臉檢測方法。該方法速度快,只能檢測80*80或更大的人臉,但可以通過影象上取樣來檢測更小的人臉。與OpenCV的人臉檢測相比,召回率更高,誤檢率更低,且人臉框更準確,檢測速度同樣很快。

程式碼實現:

import cv2
import dlib

detector = dlib.get_frontal_face_detector()       #獲取dlib正臉檢測器

img = cv2.imread("a.jpg")        #opencv讀取圖片,並顯示

img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)      #灰度處理

rects = detector(img_gray, 0)      #0次上取樣,dlib的人臉檢測器只能檢測80*80和更大的人臉,若需要檢測比它小的人臉,需對影象上取樣
print("The number of faces: {}".format(len(rects)))       #識別到的人臉個數
for rect in rects:
    #cv2.rectangle()畫出矩形,引數1:影象,引數2:矩形左上角座標,引數3:矩形右下角座標,引數4:畫線對應的rgb顏色,引數5:線的寬度
    cv2.rectangle(img, (rect.left(),rect.top()), (rect.right(),rect.bottom()), (0,0,255),2)
    
cv2.namedWindow("img", 2)      #圖片視窗可調節大小
cv2.imshow("img", img)        #顯示影象
cv2.waitKey(0)       #等待按鍵,隨後退出

執行結果:

The number of faces: 1