基于Dlib人脸检测(图像视频)demo

1、Dlib是一个深度学习开源工具,基于C++开发,也支持Python开发接口
2、由于Dlib对于人脸特征提取支持很好,很多训练好的人脸特征提取模型提供开发者使用,所以Dlib人脸识别开发很适合做人脸项目开发

官网地址:http://dlib.net
源码库:https://github.com/davisking/dlib 

图像人脸检测:

#人脸检测
#导入库
import cv2
import dlib
import matplotlib.pyplot as plt
import numpy as np
#2、显示图片
def show_image(image,title):
    img_RGB=image[:,:,::-1] #BGR转换RGB就是把通道逆序一下
    plt.title(title)
    plt.imshow(img_RGB)
    plt.axis("off")

#3、绘制人脸矩形框
def plt_rectangle(image,faces):
    for face in faces:
        cv2.rectangle(image,(face.left(),face.top()),(face.right(),face.bottom()),(255,0,0),3)
    return image

def main():
    #4、读取一张图片
    img = cv2.imread("../images/liuyifei.jpg")
    #5、灰度转化
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #6、调用dlib库中的检测器
    detector = dlib.get_frontal_face_detector()
    faces = detector(gray, 1)  # 1代表图片放大一倍
    #7、给检测出的人脸绘制矩形框
    img_result = plt_rectangle(img.copy(), faces)
    #8、创建画布
    plt.figure(figsize=(9,6))
    plt.suptitle("face detection",fontsize=14,fontweight="bold")
    #9、显示最终检测器效果
    show_image(img_result,"face-detection")
    plt.show()

if __name__ == "__main__":
    main()

 效果:

视频人脸检测:

#人脸检测
#导入库
import cv2
import dlib

#2、绘制人脸矩形框
def plt_rectangle(image,faces):
    for face in faces:
        cv2.rectangle(image,(face.left(),face.top()),(face.right(),face.bottom()),(255,0,0),3)
    return image

def main():
    #4、打开摄像头读取视频
    capture = cv2.VideoCapture(0)
    #5、判断摄像头是否正常工作
    if capture.isOpened() is False:
        print("Camera Error!")
    # 6、摄像头是否正常,循环读取每一帧
    while True:
        ret,frame = capture.read()
        if ret:
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            # 7、调用dlib库的检测器
            detector = dlib.get_frontal_face_detector()
            faces = detector(gray, 1)  # 1代表图片放大一倍
            # 8、绘制检测结果
            img_result = plt_rectangle(frame, faces)
            # 9、实时显示结果
            cv2.imshow("face detection",img_result)
            # 10、按键"esc",退出,关闭摄像头
            if cv2.waitKey(1) == 27:
                break
            # 11、释放所有资源
            capture.release()
            cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值