0


python实现人脸关键部位检测(附源码)

人脸特征提取

本文主要使用dlib库中的人脸特征识别功能。

dlib库使用68个特征点标注出人脸特征,通过对应序列的特征点,获得对应的脸部特征。下图展示了68个特征点。比如我们要提

取眼睛特征,获取37到46这几个特征点即可。

在这里插入图片描述

在代码中增加类似的映射,直接通过调用对应部位。

  1. Python学习交流Q群:906715085##3
  2. FACIAL_LANDMARKS_68_IDXS = OrderedDict([("mouth",(48,68)),("right_eyebrow",(17,22)),("left_eyebrow",(22,27)),("right_eye",(36,42)),("left_eye",(42,48)),("nose",(27,36)),("jaw",(0,17))])FACIAL_LANDMARKS_5_IDXS = OrderedDict([("right_eye",(2,3)),("left_eye",(0,1)),("nose",(4))

数据预处理与模型加载

  1. 我们按照输入图像的要求对图像进行变形处理,这里需要转化为灰度图,加载get_frontal_face_detector模型和特征库进行检测。
  1. Python学习交流Q群:906715085####加载人脸检测与关键点定位
  2. detector = dlib.get_frontal_face_detector()
  3. predictor = dlib.shape_predictor(args["shape_predictor"])#读取输入数据,预处理
  4. image = cv2.imread(args["image"])(h, w)= image.shape[:2]
  5. width=500
  6. r = width /float(w)
  7. dim =(width,int(h * r))
  8. image = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
  9. gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#人脸检测rects = detector(gray, 1)

遍历每个脸部关键点

对提取出来的人脸进行特征点预测,对人脸关键部位进行定位,同时将其转化为np_array的形式。

  1. shape = predictor(gray, rect)
  2. shape = shape_to_np(shape)

遍历每一个部分,复制一个副本进行操作,将当前检测的类别标识在图像上。

  1. #遍历每一个部分for(name,(i, j))in FACIAL_LANDMARKS_68_IDXS.items():
  2. clone = image.copy()
  3. cv2.putText(clone, name,(10,30),
  4. cv2.FONT_HERSHEY_SIMPLEX,0.7,(0,0,255),2)

根据识别出来的位置,将特征点画在图像上。

  1. for(x, y)in shape[i:j]:
  2. cv2.circle(clone,(x, y),3,(0,0,255),-1)

提取出该五官部位。

  1. (x, y, w, h)= cv2.boundingRect(np.array([shape[i:j]]))
  2. roi = image[y:y + h, x:x + w](h, w)= roi.shape[:2]
  3. width=250
  4. r = width /float(w)
  5. dim =(width,int(h * r))
  6. roi = cv2.resize(roi, dim, interpolation=cv2.INTER_AREA)

最后展示出来即可。

  1. cv2.imshow("ROI", roi)
  2. cv2.imshow("Image", clone)
  3. cv2.waitKey(0)

最终效果

原图
在这里插入图片描述

脸部检测

在这里插入图片描述

全部五官检测

在这里插入图片描述

在这里插入图片描述

关键部位检测

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

标签: python 爬虫

本文转载自: https://blog.csdn.net/xff123456_/article/details/124214086
版权归原作者 蚂蚁爱Python 所有, 如有侵权,请联系我们删除。

“python实现人脸关键部位检测(附源码)”的评论:

还没有评论