Dlib實現人臉檢測,並剪下人臉照

2021-09-09 01:39:29 字數 3642 閱讀 8836

如果你的python版本也是3.6,那麼安裝dlib要簡單很多,直接

pip install dlib==

19.7

.0

-------------------------------------------------------------------------------------------------------------------------

# -*- coding:utf-8 -*-

# -*- author:zzz_cming csdn address:

# -*- 2019/01/13; 16:12

# -*- python3.6

import cv2

import dlib

import numpy as np

predictor_model =

'shape_predictor_68_face_landmarks.dat'

detector = dlib.get_frontal_face_detector(

)predictor = dlib.shape_predictor(predictor_model)

# cv2讀取影象

# 取灰度

img_gray = cv2.cvtcolor(img, cv2.color_rgb2gray)

# 人臉數rects

rects = detector(img_gray,0)

for i in

range

(len

(rects)):

landmarks = np.matrix(

[[p.x, p.y]

for p in predictor(img,rects[i]

).parts()]

)#print(landmarks, type(landmarks))

for idx, point in

enumerate

(landmarks)

:# 68點的座標

pos =

(point[0,

0], point[0,

1])print

(idx+

1, pos)

# 利用cv2.circle給每個特徵點畫乙個圈,共68個

cv2.circle(img, pos,

3, color=(0

,255,0

))# 利用cv2.puttext輸出1-68

font = cv2.font_hershey_******x

cv2.puttext(img,

str(idx+1)

, pos, font,

0.5,(0

,0,255),

1, cv2.line_aa)

cv2.imwrite(

"result.png"

, img)

cv2.imshow(

"img"

, img)

cv2.waitkey(

0)

效果展示圖:

有了上面的基礎,想切出大頭照的方法就很簡單了,因為68個標記點座標是儲存在乙個字典dict中,我們只需要比較68個座標點的大小,確定其上、下、左、右四個最值就可以確定人臉的位置了。

比較座標點,確定四個最值的函式如下:

def

get_face_points

(dict_a)

:"""

:param dict_a: 傳入乙個字典a,內容是包含一張人臉的所有標記點座標

:return: 返回人臉上、下、左、右的索引值

"""x_max = y_max =

0 x_min = y_min =

2000

for k_1, v_1 in dict_a.items():

for k_2, v_2 in v_1.items():

if k_2 ==

"x":

ifint

(v_2)

< x_min:

x_min =

int(v_2)

ifint

(v_2)

> x_max:

x_max =

int(v_2)

else:if

int(v_2)

< y_min:

y_min =

int(v_2)

ifint

(v_2)

> y_max:

y_max =

int(v_2)

return x_min, x_max, y_min, y_max

dlib系列 人臉檢測

dlib 是乙個機器學習庫,採用c 編寫 提供c 和python介面 裡面包含 許多常用機器學習演算法。總之就是很好的框架,是官網給的教程。coding utf 8 import sys import dlib import cv2 from skimage import io 檢測器 detect...

使用Dlib庫進行人臉檢測,人臉對齊和人臉識別

在之前的部落格中,我已經介紹了如何使用dlib 18.17進行人臉檢測和人臉對齊。windows10 vs2013環境下dlib庫的編譯與使用 鄔小陽 使用dlib庫進行人臉檢測與對齊 鄔小陽 最近又看dlib官網時,發現dlib 19.3開始又加入了人臉識別dnn模型,而且在lfw上取得了99.3...

使用Dlib庫進行人臉檢測,人臉對齊和人臉識別

在之前的部落格中,我已經介紹了如何使用dlib 18.17進行人臉檢測和人臉對齊。windows10 vs2013環境下dlib庫的編譯與使用 鄔小陽 使用dlib庫進行人臉檢測與對齊 鄔小陽 最近又看dlib官網時,發現dlib 19.3開始又加入了人臉識別dnn模型,而且在lfw上取得了99.3...