import cv2 # 影象處理庫
import dlib # 人臉識別庫
from skimage import io # 影象處理庫
功能:人臉檢測畫框
引數:無
返回值:預設的人臉檢測器
detector = dlib.get_frontal_face_detector(
)print
(detector)
#
predictor = dlib.shape_predictor(
"shape_predictor_68_face_landmarks.dat"
)print
(predictor)
#
skimage.io.imread: 直接返回numpy.ndarray 物件,通道順序為rgb(注意cv2.imread()生成的是bgr),通道值預設範圍0-255。
cv2.cvtcolor(p1,p2) 是顏色空間轉換函式,p1是需要轉換的,p2是轉換成何種格式。
cv2.color_bgr2rgb 將bgr格式轉換成rgb格式
cv2.color_bgr2gray 將bgr格式轉換成灰度
dets = detector(img, 0)
# 特徵提取器的例項化
dets = detector(img,0)
print
(dets)
print
("人臉數:"
,len
(dets)
)# rectangles[[(62, 62) (211, 211)]]
# 人臉數: 1
shape = predictor(img, d)
功能:定位人臉關鍵點
引數:img:乙個numpy ndarray,包含8位灰度或rgb影象
d:開始內部形狀**的邊界框
返回值:68個關鍵點的位置
shape = predictor(img, d)
print
(shape)
#
cv2.circle(img,
(shape.part(i)
.x, shape.part(i)
.y),2,
(0,255,0
),-1,1)
cv2.circle(img, center, radius, color[, thickness[, linetype[, shift]]])
引數說明
center:圓心位置
radius:圓的半徑
color:圓的顏色
thickness:圓形輪廓的粗細(如果為正)。負厚度表示要繪製實心圓。
linetype: 圓邊界的型別。
shift:中心座標和半徑值中的小數字數。
cv2.puttext(img,
str(i)
,(shape.part(i)
.x, shape.part(i)
.y), cv2.font_hershey_******x,
0.5,
(255
,255
,255
))
puttext(img, text, org, fontface, fontscale, color[, thickness[, linetype[, bottomleftorigin]]]) -> img
文字內容,起點座標,字型,字型大小,顏色,線寬,線型別(cv2.line_aa)
函式cv2.imshow() 顯示影象,視窗會自動調整為影象大小。第乙個引數是視窗的名字,其次才是我們的影象。你可以建立多個視窗,只要你喜歡,但是必須給他們不同的名字。
cv2.imshow(
'face_detector_68'
, img)
關於cv2.waitkey()的詳細說明
import cv2 # 影象處理庫
import dlib # 人臉識別庫
from skimage import io # 影象處理庫
# 使用特徵提取器get_frontal_face_detector
detector = dlib.get_frontal_face_detector(
)# dlib的68點模型,使用官方訓練好的特徵**器
predictor = dlib.shape_predictor(
"shape_predictor_68_face_landmarks.dat"
)# 所在路徑
# 特徵提取器的例項化
dets = detector(img,0)
print
("人臉數:"
,len
(dets)
)for k, d in
enumerate
(dets)
:print
("第"
, k+1,
"個人臉d的座標:"
,"left:"
, d.left(),
"right:"
, d.right(),
"top:"
, d.top(),
"bottom:"
, d.bottom())
width = d.right(
)- d.left(
) heigth = d.bottom(
)- d.top(
)print
('人臉面積為:'
,(width*heigth)
)# 利用**器**
shape = predictor(img, d)
# print(shape)
# 標出68個點的位置
for i in
range(68
):cv2.circle(img,
(shape.part(i)
.x, shape.part(i)
.y),2,
(0,255,0
),-1
,1) cv2.puttext(img,
str(i)
,(shape.part(i)
.x, shape.part(i)
.y), cv2.font_hershey_******x,
0.5,
(255
,255
,255))
# 顯示一下處理的,然後銷毀視窗
dlib庫的學習
dlib庫支援cnn演算法,有python版本和c 版本,先實現python版本,再實現c 版本,最後實現android版本。注意,還需要安裝libx11 dev庫,使用命令 sudo apt get install libx11 dev在dlib 19.15目錄下執行命令 mkdir build ...
dlib庫的安裝
t1方法 pip install dlib 此方法是需要在你安裝cmake boost環境的計算機使用 1 使用pip install cmake安裝cmake庫 2 使用pip install boost安裝boost庫 t2方法 conda install c menpo dlib 19.10 ...
python中dlib人臉識別庫安裝歷險記
dlib是一款出色的人臉識別庫,這個庫將很多常用的人臉識別演算法都封裝成為函式,而且是跨平台的庫,支援在cpp和python中被呼叫。dlib庫是建立在其他的庫打基礎進行使用的,這些庫主要有 opencv,boost庫等 在windows下安裝直接輸入 pip install dlib 由於wind...