当前位置:   article > 正文

Python+dilb 简单实现人脸检测(附代码)_opencv(4.7.0) d:\a\opencv-python\opencv-python\ope

opencv(4.7.0) d:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\co

如果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

 

二、前期知识

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

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

1 读取图片

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

整个代码如下: 

  1. # 导入cv模块
  2. import cv2 as cv
  3. # 读取图片
  4. img = cv.imread('face4.jpg')
  5. # 显示图片
  6. cv.imshow('read_img', img)
  7. # 为了防止自动退出(pycharm可能会发生),所以可以在代码后面加入:等待
  8. cv.waitKey(0)
  9. # 释放内存
  10. cv.destroyAllWindows()

效果如下: 

2 灰度转换

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

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

整个代码如下: 

  1. # 导入cv模块
  2. import cv2 as cv
  3. # 读取图片
  4. img = cv.imread('face1.jpg')
  5. # 灰度转换
  6. gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
  7. # 显示灰度图片
  8. cv.imshow('gray', gray_img)
  9. # 保存灰度图片
  10. cv.imwrite('gray_face11.jpg', gray_img)
  11. # 显示图片
  12. cv.imshow('read_img', img)
  13. # 等待
  14. cv.waitKey(0)
  15. # 释放内存
  16. 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'

报错

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

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

解决方法

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

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

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

成功了,效果如下: 

 

3 修改尺寸

整个代码如下: 

  1. # 导入cv模块
  2. import cv2 as cv
  3. # 读取图片
  4. img = cv.imread('face4.jpg')
  5. # 修改尺寸
  6. resize_img = cv.resize(img, dsize=(200, 200))
  7. # 显示原图
  8. cv.imshow('img', img)
  9. # 显示修改后的
  10. cv.imshow('resize_img', resize_img)
  11. # 打印原图尺寸大小
  12. print('未修改:', img.shape)
  13. # 打印修改后的大小
  14. print('修改后:', resize_img.shape)
  15. # 等待
  16. while True:
  17. if ord('q') == cv.waitKey(0):
  18. break
  19. # 释放内存
  20. cv.destroyAllWindows()

效果如下: 

 

4 绘制矩形

整个代码如下: 

  1. # 导入cv模块
  2. import cv2 as cv
  3. # 读取图片
  4. img = cv.imread('face4.jpg')
  5. # 坐标
  6. x, y, w, h = 100, 100, 100, 100
  7. # 绘制矩形
  8. cv.rectangle(img, (x, y, x + w, y + h), color=(0, 0, 255), thickness=1)
  9. # 绘制圆形
  10. cv.circle(img, center=(x + w, y + h), radius=100, color=(255, 0, 0), thickness=5)
  11. # 显示
  12. cv.imshow('re_img', img)
  13. while True:
  14. if ord('q') == cv.waitKey(0):
  15. break
  16. # 释放内存
  17. cv.destroyAllWindows()

效果如下: 

 

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

整个代码如下: 

  1. # 导入cv模块
  2. import cv2 as cv
  3. # 检测函数
  4. def face_detect_demo():
  5. gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
  6. face_detect = cv.CascadeClassifier('D:/my/python-pycharm/python-envs/venv-deep/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
  7. face = face_detect.detectMultiScale(gary, 1.01, 5, 0, (100, 100), (300, 300))
  8. for x, y, w, h in face:
  9. cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)
  10. cv.imshow('result', img)
  11. # 读取图像
  12. img = cv.imread('face4.jpg')
  13. # 检测函数
  14. face_detect_demo()
  15. # 等待
  16. while True:
  17. if ord('q') == cv.waitKey(0):
  18. break
  19. # 释放内存
  20. cv.destroyAllWindows()

效果如下: 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/375519
推荐阅读
相关标签
  

闽ICP备14008679号