Python+dilb 简单实现人脸检测(附代码)

这篇具有很好参考价值的文章主要介绍了Python+dilb 简单实现人脸检测(附代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客

目录

一、环境配置

二、前期知识

1 读取图片

2 灰度转换

解决报错cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

3 修改尺寸

4 绘制矩形

5 人脸检测


一、环境配置

pycharm中,如果要安装cv2,就需要安装opencv-python库,这个库并不是自带的,所以我们要pip一下。注意不要写成opencv!它还会自己安装另一个依赖库,

pip install opencv-python

注意:import时就不是opencv-python或者opencv了,要用cv2了!

import cv2

 文章来源地址https://www.toymoban.com/news/detail-475206.html

二、前期知识

dlib支持检测人脸特征关键点,官方提供了68维度和5维度的人脸关键店检测预训练模型提供下载使用。

相关数据与模型文件下载地址:Index of /files

1 读取图片

想要处理图片,就得先要读取图片,光读取不行,还得把图片显示出来。

整个代码如下: 

# 导入cv模块
import cv2 as cv

# 读取图片
img = cv.imread('face4.jpg')
# 显示图片
cv.imshow('read_img', img)
# 为了防止自动退出(pycharm可能会发生),所以可以在代码后面加入:等待
cv.waitKey(0)
# 释放内存
cv.destroyAllWindows()

效果如下: 

Python+dilb 简单实现人脸检测(附代码)

2 灰度转换

在图像预处理中,图像的灰度变换是图像增强的重要手段,灰度变换可以使图像对比度扩展,图像清晰,特征明显,灰度变换主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。

在数字图像中,像素是基本的表示单位,各个像素的亮安程度用灰度值来标识,只含亮度信息,不含色彩信息的图像称为灰度图像,对于单色图像,它的每个像素的灰度值用【0,255】区间的整数表示,即图像分为256个灰度等级,对于彩色图像,他的每个像素由R,G,B三个单色调配而成,如果每个像素的R,G,B完全相同,也就是R=G=B=D,该图像就是灰度图像,其中D被称为各个像素的灰度值。

整个代码如下: 

# 导入cv模块
import cv2 as cv

# 读取图片
img = cv.imread('face1.jpg')
# 灰度转换
gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 显示灰度图片
cv.imshow('gray', gray_img)
# 保存灰度图片
cv.imwrite('gray_face11.jpg', gray_img)
# 显示图片
cv.imshow('read_img', img)
# 等待
cv.waitKey(0)
# 释放内存
cv.destroyAllWindows()

解决报错cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

报错

Python+dilb 简单实现人脸检测(附代码)

我发现代码报错,代码检查过,没有问题,这是怎么回事? 

原因:这可能是因为你的路径中有中文,opencv的致命弱点:路径不能有中文!

解决方法

(1)重新新建路径中没有中文的新文件夹,重新运行代码,但是还是报错了。

(2)已经修改了路径中没有中文,但是还是显示不出来。

这就比较少见,可能是因为图片格式比较冷门,或者是错误的,所以无法显示。--》换一张图片

成功了,效果如下: 

Python+dilb 简单实现人脸检测(附代码)

 

3 修改尺寸

整个代码如下: 

# 导入cv模块
import cv2 as cv

# 读取图片
img = cv.imread('face4.jpg')
# 修改尺寸
resize_img = cv.resize(img, dsize=(200, 200))
# 显示原图
cv.imshow('img', img)
# 显示修改后的
cv.imshow('resize_img', resize_img)
# 打印原图尺寸大小
print('未修改:', img.shape)
# 打印修改后的大小
print('修改后:', resize_img.shape)
# 等待
while True:
    if ord('q') == cv.waitKey(0):
        break
# 释放内存
cv.destroyAllWindows()

效果如下: 

Python+dilb 简单实现人脸检测(附代码)

Python+dilb 简单实现人脸检测(附代码)

 

4 绘制矩形

整个代码如下: 

# 导入cv模块
import cv2 as cv

# 读取图片
img = cv.imread('face4.jpg')
# 坐标
x, y, w, h = 100, 100, 100, 100
# 绘制矩形
cv.rectangle(img, (x, y, x + w, y + h), color=(0, 0, 255), thickness=1)
# 绘制圆形
cv.circle(img, center=(x + w, y + h), radius=100, color=(255, 0, 0), thickness=5)
# 显示
cv.imshow('re_img', img)
while True:
    if ord('q') == cv.waitKey(0):
        break
# 释放内存
cv.destroyAllWindows()

效果如下: 

Python+dilb 简单实现人脸检测(附代码)

 

5 人脸检测

(1)首先,需要找到我们需要用到的haarcascade_frontalface_alt2.xml,位置是在Python的环境/虚拟环境下的lib/site-packages/的cv2/data/下。

此处我的路径是D:/my/python-pycharm/python-envs/venv-deep/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml

Python+dilb 简单实现人脸检测(附代码)

整个代码如下: 

# 导入cv模块
import cv2 as cv

# 检测函数
def face_detect_demo():
    gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    face_detect = cv.CascadeClassifier('D:/my/python-pycharm/python-envs/venv-deep/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
    face = face_detect.detectMultiScale(gary, 1.01, 5, 0, (100, 100), (300, 300))
    for x, y, w, h in face:
        cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)
    cv.imshow('result', img)


# 读取图像
img = cv.imread('face4.jpg')
# 检测函数
face_detect_demo()
# 等待
while True:
    if ord('q') == cv.waitKey(0):
        break
# 释放内存
cv.destroyAllWindows()

效果如下: 

Python+dilb 简单实现人脸检测(附代码)

 

到了这里,关于Python+dilb 简单实现人脸检测(附代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH(Local Binary Patterns Histograms)算法进行人脸训练和识别 2、实现步骤: 3、判断是谁的人脸: 案例中涉及的关键函数说

    2024年04月26日
    浏览(92)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之四 简单行人人体检测效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之四 简单行人人体检测效果 一、简单介绍 二、简单行人人体检测效果实现原理 三、简单行人人体检测效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语言。是一种面向对

    2024年04月26日
    浏览(64)
  • OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

    人脸处理是人工智能中的一个热门话题,人脸处理可以使用计算机视觉算法从人脸中自动提取大量信息,例如身份、意图和情感。人脸在视觉交流中起着重要作用,这是由于人脸中包含大量非语言信息,因此人脸处理一直以来对于计算机视觉学习者来说都是非常有趣的话题,

    2024年02月06日
    浏览(96)
  • 人工智能-OpenCV+Python实现人脸识别(人脸检测)

    在OpenCV中使用Haar特征检测人脸,那么需要使用OpenCV提供的xml文件(级联表)在haarcascades目录下。这张级联表有一个训练好的AdaBoost训练集。首先要采用样本的Haar特征训练分类器,从而得到一个级联的AdaBoost分类器。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征

    2024年02月06日
    浏览(104)
  • DeepFace人脸检测(python实现)

    (1)基于级联分类器的人脸检测: https://mydreamambitious.blog.csdn.net/article/details/124851743 (2)训练自己的级联分类器: https://mydreamambitious.blog.csdn.net/article/details/124955149 (3)基于dlib人脸检测 https://mydreamambitious.blog.csdn.net/article/details/123535760 https://mydreamambitious.blog.csdn.net/article/

    2024年02月05日
    浏览(34)
  • 使用opencv和dlib库(C++代码)实现人脸活体检测(眨眼、张嘴、摇头检测)

    本文章使用opencv和dlib库,使用C++代码实现了人脸活体检测,包括眨眼检测、张嘴检测以及摇头检测,可以对静态图片和活体进行有效区分。 dlib是一个开源的C++机器学习库,它提供了一系列用于图像处理、人脸检测、人脸识别、物体检测、图像标注等功能的算法和工具。dli

    2024年04月14日
    浏览(61)
  • java项目分享 - 基于opencv、dilb的员工人脸识别考勤系统

    基于opencv、dilb的员工人脸识别考勤系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 选题“员工刷脸考勤”,要求采用python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部

    2024年01月17日
    浏览(53)
  • 【opencv】python实现人脸检测和识别训练

    OpenCV 中的人脸识别通常基于哈尔特征分类器(Haar Cascade Classifier)进行。以下是 OpenCV 人脸识别的基本原理: Haar Cascade Classifier : 特征分类器 :Haar 特征是一种基于矩形区域的特征,可以用于图像中的对象检测。这些特征可以表示边缘、线和区域的变化等。 级联分类器 :

    2024年01月17日
    浏览(51)
  • 【计算机毕设项目】基于opencv、dilb的员工人脸识别考勤系统

    基于opencv、dilb的员工人脸识别考勤系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 选题“员工刷脸考勤”,要求采用python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部

    2024年02月03日
    浏览(52)
  • 毕业设计——基于python-contrib-opencv的人脸识别及检测系统设计与实现(实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能)

    如需完整源码,可以联系博主获取 基于python-contrib-opencv,dlib,pyqt5。能够实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能。 一、引言 随着计算机视觉和人工智能技术的不断发展,人脸识别技术已成为智能安防、身份验证等领域的关键技术之一。而基于

    2024年04月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包