如果你的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...