• 基于dlib库关键点检测(图片和视频)demo


    环境win10,python3.9,dlib-19.22.9

    安装dlib库存在很多问题,尤其是在win10上,记录了存在的问题,供参考:

     

    dlibyou俩个版本,一个是使用到GPU和cuda的版本
    一个是没有使用的版本
    
    要想在python环境下安装dlib库,官方给了两种安装方式:
    
    1、pip install dlib --verbose;
    2、下载源码,然后执行 python setup.py install;
    
    这两种安装方式存在的问题是,需要编译,需要你的机器上安装了cmake和C++编译器,编译过程耗时也耗内存,目前最新版本(19.22)编译需要8GB以上内存,编译时间3分钟以上。
    
    官方网站
    http://dlib.net/    (下载编译版本)
    https://pypi.org/simple/dlib/  (下载预whl)
    
    https://pypi.tuna.tsinghua.edu.cn/simple/dlib/(可以下载whl)
    
    
    #下载并安装
    python -m pip install https://files.pythonhosted.org/packages/0e/ce/f8a3cff33ac03a8219768f0694c5d703c8e037e6aba2e865f9bae22ed63c/dlib-19.8.1-cp36-cp36m-win_amd64.whl#sha256=794994fa2c54e7776659fddb148363a5556468a6d5d46be8dad311722d54bfcf
    
    #更新pip的版本
    python -m pip install --upgrade pip
    
    #直接安装文件
    pip install xxx
    
    
    ERROR: dlib-19.8.1-cp36-cp36m-win_amd64.whl is not a supported wheel on this platform.
    本机python的版本是3.9,dlib支持版本是3.6
    
    pip install dlib-19.22.99-cp39-cp39-win_amd64.whl
    重新下载一个支持3.9版本的;安装成功!!!

     

     

    1、dlib.get_frontal_face_detector() 获取人脸检测器
    2、dlib.shape_predictor() 预测人脸关键点

    下载模型:

    人脸关键点模型,下载地址:有68个点和5个点468个点,超过1000个点的检测就是3D检测
    http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

    RuntimeError: Unexpected version found while deserializing dlib::shape_predictor.
    主要原因是:shape_predictor_68_face_landmarks.dat.bz2需要解压成shape_predictor_68_face_landmarks.dat

     

    图片关键点检测

    1. #图片的人脸检测
    2. #1、导入库
    3. import cv2
    4. import matplotlib.pyplot as plt
    5. import numpy as np
    6. import dlib
    7. #2、读取一张图片
    8. image = cv2.imread("../images/huitao.jpg")
    9. #3、调用人脸检测器
    10. detector = dlib.get_frontal_face_detector()
    11. #4、加载预测关键点模型(68个关键点)
    12. predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
    13. #5、灰度转换
    14. gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
    15. #6、人脸检测
    16. faces = detector(gray,1) #写1表示把灰度图片放大一倍,0表示原来的灰度图片
    17. #7、循环遍历每一张人脸,给人脸绘制矩形框和关键点
    18. for face in faces:
    19. #8、绘制矩形框
    20. cv2.rectangle(image,(face.left(),face.top()),(face.right(),face.bottom()),(0,255,0),5) #颜色绿色,矩形框粗细是5
    21. #9、预测关键点(通过模型)
    22. shape = predictor(image,face)
    23. #10、获取关键点坐标 (循环获取68个关键点)
    24. for pt in shape.parts():
    25. #获取横坐标
    26. pt_position = (pt.x,pt.y)
    27. #11、显示/绘制关键点(每个点是圆形,关键点坐标放进来,圆大小是3,-1表示是实心圆)
    28. cv2.circle(image,pt_position,3,(0,255,0),-1)
    29. #12、显示整个效果图
    30. plt.imshow(image)
    31. plt.axis("off")
    32. plt.show()

    效果图:

    video关键点检测:

    1. #1、导入库
    2. import cv2
    3. import dlib
    4. #2、打开摄像头
    5. capture = cv2.VideoCapture(0) #获取到第一个摄像头
    6. #3、获取人脸检测器
    7. detector = dlib.get_frontal_face_detector()
    8. #4、获取人脸关键点检测器
    9. predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
    10. while True:
    11. #5、读取视频流
    12. ret,frame = capture.read() #获取每一帧
    13. #6、灰度转换
    14. gray = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
    15. #7、人脸检测
    16. faces = detector(gray,1)
    17. #8、绘制每张人脸的矩形框和关键点
    18. for face in faces: #获取每一张人脸
    19. # 8.1 绘制矩形框
    20. cv2.rectangle(frame,(face.letf(),face.top()),(face.right(),face.bottom()),(0,255,0),5)
    21. # 8.2检测到关键点
    22. shape =predictor(gray,face)
    23. # 8.3获取关键点坐标
    24. for pt in shape.parts():
    25. #每个点的坐标
    26. pt_position = (pt.x,pt.y)
    27. # 8.4绘制关键点
    28. cv2.circle(frame,pt_position,3,(0,255,0),-1)
    29. if cv2.waitKey(1) & 0xFF == ord("q"): #如果按下q键,就结束
    30. break
    31. # 9显示效果
    32. cv2.imshow("face detection landmark",frame)
    33. capture.release()
    34. cv2.destroyAllWindows()

     效果:

     

  • 相关阅读:
    沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明
    Vue复刻华为官网 (二)
    Windows安装FFmpeg说明
    React Native for Arcgis 地图开发 聚合图Cluster (十一)
    [PowerQuery] PowerAutoMate 刷新PowerBI 数据
    SpringBoot如何整合Redis?SpringBoot如何使用Redis?Redies基本使用。
    springboot+vue+elementUI 会员制医疗预约服务管理信息系统-#毕业设计
    java家用电器远程管理系统
    YoloV8改进策略:SwiftFormer,全网首发,独家改进的高效加性注意力用于实时移动视觉应用的模型,重构YoloV8
    OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合
  • 原文地址:https://blog.csdn.net/chehec2010/article/details/126895807