Dlib人臉識別 2 繪製人臉識別結果

2021-10-06 21:33:26 字數 3371 閱讀 5470

cv2.puttext(物件, 文字內容,座標,字型, 字型倍數, 字型顏色,字型厚度)
font = cv2.font_hershey_duplex

cv2.puttext(img,

"laowang"

,(d.left()+

6, d.bottom()-

6), font,

0.5,

(255

,255

,255),

1)# 文字內容是laowang

# 文字的座標設定為:(d.left() + 6, d.bottom() - 6)

# 字型為cv2.font_hershey_plain

# 字型倍數為0.5倍

# 字型顏色為紅色(0,0,255)

# 字型厚度為1

# 0. 匯入模組

import os

import dlib

import glob

import numpy as np

import cv2

# 1. 載入模型、

## 正向人臉檢測器

detector = dlib.get_frontal_face_detector(

)## 載入特徵點提取模型

predictor_path =

'shape_predictor_68_face_landmarks.dat'

predictor = dlib.shape_predictor(predictor_path)

## 載入面部識別模型

face_rec_model_path =

'dlib_face_recognition_resnet_model_v1.dat'

facerec = dlib.face_recognition_model_v1(face_rec_model_path)

## 已知

known_image_path =

'know'

## 測試

test_image_path =

"unknow"

# 2. 宣告存放資料的變數

## 宣告descriptors,用於存放已知對應的人臉特徵向量

descriptors =

## 宣告names,用於存放於人臉特徵向量對應的名字。

## ps:注意測試集中有多少個,names中就要有相同數量的名稱元素。否則會報錯

names =

["reba"

,"laowang"

]# 3. 開始檢測

## 遍歷known_image_pat**件夾下所有以.jpg結尾的檔案。

## 使用 detector 檢測器來檢測影象中的人臉

dets = detector(img,1)

for k, d in

enumerate

(dets)

:## 獲取人臉特徵點

shape = predictor(img, d)

## 計算特徵向量

face_descriptor = facerec.compute_face_descriptor(img, shape)

## 特徵向量轉換為numpy array

v = np.array(face_descriptor)

## 把此次資料存到人臉特徵向量列表裡面

# 4. 進行判斷

## 遍歷test_image_pat**件夾下所有以.jpg結尾的檔案。

## 使用 detector 檢測器來檢測影象中的人臉

dets = detector(img,1)

for k, d in

enumerate

(dets)

:## 獲取人臉特徵點

shape = predictor(img, d)

## 計算特徵向量

face_descriptor = facerec.compute_face_descriptor(img, shape)

## 將當前待判斷的特徵向量轉化為 current

current = np.array(face_descriptor)

## 計算歐式距離,識別人臉

### 設定閾值

tolerance =

0.4 current_name =

"unknow name"

### 對這個存放著已知特徵向量的列表descriptors遍歷

for i in

range

(len

(descriptors)):

### 計算歐氏距離

distance = np.linalg.norm(descriptors[i]

- current)

### 對歐氏距離判斷

if distance < tolerance:

current_name = names[i]

break

## 輸出對當前的識別結果

print

(+ current_name)

cv2.rectangle(img,

(d.left(

), d.top())

,(d.right(

), d.bottom())

,(0,

0,255),2

)# 在上新增文字

font = cv2.font_hershey_duplex

cv2.puttext(img,

"myrecon"

,(d.left()+

6, d.bottom()-

6), font,

0.5,

(255

,255

,255),

1)cv2.imshow(

"face recogition image"

,cv2.cvtcolor(img,cv2.color_rgb2bgr)

) cv2.waitkey(0)

cv2.destroyallwindows(

)

執行結果:

dlib人臉識別

的編寫在jupyter notebook中來完成 jupyter notebook是乙個工具 pip install jupyter 安裝使用 如何啟動 命令列輸入 jupyter notebook 前提,環境變數配置成功 dlib安裝 pip install dlib dlib有不同的版本,最新版...

dlib庫與人臉識別例項

dlib是乙個機器學習的c 庫,包含了許多機器學習常用的演算法。dlib官網位址 dlib可以幫助您建立很多複雜的機器學習方面的軟體來幫助解決實際問題。目前dlib已經被廣泛的用在行業和學術領域,包括機械人,嵌入式裝置,移動 和大型高效能計算環境。dlib是開源的 免費的.特點是 文件齊全 高質量的...

python呼叫Dlib做人臉識別

參考 安裝dlib cmd裡輸入,pip install dlib即可自動安裝 coding utf 8 import cv2 import dlib detector dlib.get frontal face detector def discern img gray cv2.cvtcolor ...