python调用dlib检测人脸的68个特征点

 时间:2026-02-13 02:24:59

1、opencv模块的安装,请参考下面的链接。

dlib模块,请使用pip安装dlib==19.6.1

python调用dlib检测人脸的68个特征点

2、用opencv读取图片数据:

img = cv2.imdecode(np.fromfile(

        'D:/我的图片/0.jpg',

        dtype=np.uint8),-1)

python调用dlib检测人脸的68个特征点

3、给出一个人脸检测器:

detector = dlib.get_frontal_face_detector()

用它来检测人脸,返回图中人脸的个数和坐标位置:

faces = detector(img,1)

if (len(faces) > 0):

    for k,d in enumerate(faces):

        print(k,d)

看下面的图片,k只有0,说明只找到一个人脸,d是人脸的坐标。

python调用dlib检测人脸的68个特征点

4、在原图中,用蓝色框标出人脸。

cv2.rectangle(img,

            (d.left(),d.top()),

            (d.right(),d.bottom()),

            (255,0,0))

python调用dlib检测人脸的68个特征点

5、再训练一个人脸特征点检测器:

points = dlib.shape_predictor(r'D:\……\shape_predictor_68_face_landmarks.dat')

这里需要提供绝对路径!

而shape_predictor_68_face_landmarks.dat是一个训练好了的模型,可以在

https://pan.baidu.com/s/1dFBYP89ON1V9eKBvG9UwDA下载,密码是hy7x。

python调用dlib检测人脸的68个特征点

6、用人脸特征点检测器来检测d范围内的特征点:

pts = points(img,d)

在图像中标注出这些特征点。

python调用dlib检测人脸的68个特征点

7、可以看到,68个特征点已经全部标注出来了,而且都限制在蓝色框内部。

python调用dlib检测人脸的68个特征点

8、给这些特征点加上标签:

cv2.putText(img,str(i),

                (pts.part(i).x,

                 pts.part(i).y),

                 cv2.FONT_HERSHEY_SIMPLEX,0.5,

                 (255,0,255))

python调用dlib检测人脸的68个特征点

9、原图变成这样了。

python调用dlib检测人脸的68个特征点

  • 给老人过“米寿”,是多少岁
  • 糖尿病饮食疗法中如何使用纯鲜椰子油来控制血糖
  • 办理生产许可证的流程怎样走
  • 藕甜的排骨藕汤
  • 《阴阳师》SR式神海忍如何体验
  • 热门搜索
    北京市旅游局官网 九寨沟旅游季节 广东清远旅游 济宁旅游景点大全 自助旅游 敦煌 旅游 山东泰山旅游 铜川旅游景点大全 杭州市旅游 南昌旅游景点大全