OpenCV和dlib进行人脸检测

OpenCV和dlib进行人脸检测

基于opencv进而dlib算法进行人脸检测方法

友友们你们好呀! 周末最后一作,搞完快点睡觉QAQ。废话不多说,赶紧进入正题吧,本篇文章将简要讲述用OpenCV和dlib算法库实现人脸检测的应用(又是调库操作(小声))

模型结果预览

在这里插入图片描述
这里将人脸识别框画出并且将框抠走放在图片的左上角

数据准备

俗话说:“工欲善其事必先利其器”。那么在学习图像处理领域方面,器一定就是数据集了,此处由于仅对图像做检测识别,所以相关的数据集就是照片了,当然dlib也是支持视频流人脸检测识别的,大家有兴趣的话可以查看一下下面的网址链接带你走进dlib
此处我们的照片就是上面出现过的啦。

不要问我为啥选这张照片(qaq可能是有种说不上来的感觉吧pass—)

代码实现与调用dlib库

代码注释很详细,就不再赘述了,如果有问题欢迎留言评论!

import cv2
import dlib

#### 1.使用dlib人脸检测模型,进行人脸检测 ####
img = cv2.imread("task2.jpg")
# dlib自带的人脸检测模型
detector = dlib.get_frontal_face_detector()
# 对读取的原始图像,进行人脸检测
height=img.shape[0]
width=img.shape[1]
rate0=height/width
faceRects = detector(img)
num=0
x=10
for box_info in faceRects:
    num+=1
    # 对box_info进行拆解,将人脸检测  框  的左上角和右下角提取出来
    #box_info就是框的信息草稿抽象的框
    x_min, y_min, x_max, y_max = box_info.left(), box_info.top(), box_info.right(), box_info.bottom()
    # 在图片上  绘制  车辆框的方框,(0, 0, 255)为颜色,3为画的框线的宽度
    rate=(y_max-y_min)/(x_max-x_min)
    cv2.rectangle(img, (x_min, y_min), (x_max, y_max), (0, 0, 255), 3)
    #抠图操作
    img_crop = img[y_min:y_max, x_min:x_max]  # [y1:y2,x1:x2]
    #保持前后图像的长宽比
    img_crop=cv2.resize(img_crop,(200,int(200*rate)))
    img[50:int(200*rate)+50,x:x+200]=img_crop
    x+=200
# 很多时候,图片的长宽太大,屏幕显示不全
# 为了便于查看图片,可以将图片的大小,缩放到某一尺寸,比如(500,600),即宽500像素,高600像素
img = cv2.resize(img, (500,int(500*rate0)))
# 显示图片
cv2.waitKey(0)
# 使用cv2.putText,在每个关键点的位置,画上数值,3是数字的大小,5是粗细
cv2.putText(img, "face_count:"+str(num), (10, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255),1)
cv2.imshow("image",img)
# 显示图片停顿的时间,如果是0,则一直显示。如果是100,则显示100ms
cv2.waitKey(0)

心得体会

周末最后一作,总算在午夜前结束,头顶的灯已经熄灭,繁忙的一周,第二天又是新的一周,周而复始,似乎手头的工作永远没有尽头,但也许正是这样没有尽头的路才更值得去走,我们不妨且歌且行,在路上唱出自我的同时发现体会到与生命的默契以及梦想的模样。

仅以此篇告别逝去的一周,开启新的一周的大门,倘若我们坚信明天会更好,那又有什么困难可以阻挡住我们呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值