图片人脸检测

人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看.

功能展示

识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下:

多张脸识别效果图:

技术实现思路

图片转换成灰色(去除色彩干扰,让图片识别更准确)

图片上画矩形

使用训练分类器查找人脸

具体实现代码

图片转换成灰色

使用OpenCV的cvtColor()转换图片颜色,代码如下:

import cv2filepath = "img/xingye-1.jpg"
img = cv2.imread(filepath)
# 转换灰色
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示图像
cv2.imshow("Image", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

图片上画矩形

使用OpenCV的rectangle()绘制矩形,代码如下:

import cv2filepath = "img/xingye-1.jpg"
img = cv2.imread(filepath)  # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换灰色
x = y = 10  # 坐标
w = 100  # 矩形大小(宽、高)
color = (0, 0, 255)  # 定义绘制颜色
cv2.rectangle(img, (x, y), (x + w, y + w), color, 1)  # 绘制矩形
cv2.imshow("Image", img)  # 显示图像
cv2.waitKey(0)
cv2.destroyAllWindows()  # 释放所有的窗体资源

使用训练分类器查找人脸

在使用OpenCV的人脸检测之前,需要一个人脸训练模型,格式是xml的,我们这里使用OpenCV提供好的人脸分类模型xml,下载地址:https://github.com/opencv/opencv/tree/master/data/haarcascades 可全部下载到本地,本人存放的路径是:C:\Python36\Lib\site-packages\opencv-master\data\haarcascades.

完整实现代码:

import cv2filepath = "img/xingye-1.jpg"
img = cv2.imread(filepath)  # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换灰色# OpenCV人脸识别分类器
classifier = cv2.CascadeClassifier("C:\Python36\Lib\site-packages\opencv-master\data\haarcascades\haarcascade_frontalface_default.xml"
)
color = (0, 255, 0)  # 定义绘制颜色
# 调用识别人脸
faceRects = classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
if len(faceRects):  # 大于0则检测到人脸for faceRect in faceRects:  # 单独框出每一张人脸x, y, w, h = faceRect# 框出人脸cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)# 左眼cv2.circle(img, (x + w // 4, y + h // 4 + 30), min(w // 8, h // 8),color)#右眼cv2.circle(img, (x + 3 * w // 4, y + h // 4 + 30), min(w // 8, h // 8),color)#嘴巴cv2.rectangle(img, (x + 3 * w // 8, y + 3 * h // 4),(x + 5 * w // 8, y + 7 * h // 8), color)cv2.imshow("image", img)  # 显示图像
c = cv2.waitKey(10)cv2.waitKey(0)
cv2.destroyAllWindows()

往期目录

视频人脸检测——Dlib版(六)
OpenCV添加中文(五)
图片人脸检测——Dlib版(四)
视频人脸检测——OpenCV版(三)
图片人脸检测——OpenCV版(二)
OpenCV环境搭建(一)
更多更新,欢迎访问我的github:https://github.com/vipstone/faceai

图片人脸检测——OpenCV版(二)相关推荐

  1. 图片人脸检测——Dlib版(四)

    上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测- ...

  2. 视频人脸检测——OpenCV版(三)

    视频人脸检测是图片人脸检测的高级版本,图片检测详情点击查看我的上一篇<图片人脸检测--OpenCV版(二)> 实现思路: 调用电脑的摄像头,把摄像的信息逐帧分解成图片,基于图片检测标识出人 ...

  3. dlib php,图片人脸检测——Dlib版(四)

    上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 往期目录 dlib与OpenCV对比 识别精准度:Dlib >= OpenCV ...

  4. 视频人脸检测——Dlib版(六)

    往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测--Dlib版(四) 视频人脸检测--OpenCV版(三) 图片人脸检测--OpenCV版(二) OpenCV环境搭 ...

  5. python读取视频流做人脸识别_python实现图片,视频人脸识别(opencv版)

    图片人脸识别 import cv2 filepath = "img/xingye-1.png" img = cv2.imread(filepath) # 读取图片 gray = c ...

  6. JavaCV实现图片人脸检测

    之前写的文章 Java + OpenCV 实现图片人脸检测 很多同学反馈说要搭建环境很麻烦,  加上我换了电脑, 本身自己的opencv环境也丢了, 搭建环境的痛实在不想经历第二遍, 所以还是研究了以 ...

  7. 基于Opencv的图片人脸检测

    本篇内容介绍如何使用opencv,scipy,tensorflow来实现计算机人脸检测.(用一点也是用 =.=) 先声明一下,本篇内容是在图片中的人脸检测, 调动计算机摄像头的人脸识别链接: 链接:h ...

  8. 人脸检测(十二)--DDFD算法

    转自:blog.csdn.net/qq_14845119/article/details/52564519 DDFD(Deep Dense Face Detector)是一种基于AlexNet进行微调 ...

  9. 25 行 Python 代码实现人脸检测——OpenCV 技术教程

    安装 OpenCV 首选,你需要找到对应你的操作系统的正确设置文件. 我发现,安装 OpenCV 是最难的一个环节.如果你遇到奇怪的.无法解释的错误,有可能是库崩溃了.32 与 64 比特的兼容问题等 ...

最新文章

  1. 【RecyclerView】 十、RecyclerView 数据更新 ( 增加单条数据 | 批量增加数据 )
  2. python字符串的方法和列表的方法_python 字符串方法及列表,元组,字典(一)
  3. mysql主从是同步还是异步_mysql主从同步异步场景的分析
  4. elementui 上传七牛_element ui使用上传组件上传文件到七牛(qiniu-js)
  5. Android 系统(220)---如何快速对系统重启问题进行归类
  6. 无刷电机反电动势过零检测
  7. create-react-app 后需要npm run eject
  8. gulp.js 4.0试用
  9. java 封装优化工具,Java开源封装工具
  10. 原创度检测工具-文章原创度在线检测免费
  11. 金田变频器说明书_金田BH386系列变频器使用手册.pdf
  12. 浅谈利用强化学习A3C玩转超级玛丽奥
  13. matplotlib画图并设置图片大小
  14. 想把语音转成文字,就这样做
  15. 网络安全之入侵检测系统
  16. 算法——暴力之美(volence‘s beautify of algorithm)
  17. (41.1)【JWT-KID漏洞】KID之目录遍历、命令注入、SQL注入
  18. dismiss all popup view
  19. matplotlib.mlab库的重要函数
  20. Linux和Windows误删文件恢复办法

热门文章

  1. Pytorch RuntimeERROR: Given groups=1 weights of size [256,64,1,1] expected input[1,16,256,256] to
  2. 缓存雪崩、击穿、穿透解决方案
  3. UVA1583 Digit Generator
  4. 面向对象、继承、抽象方法重载知识点整理
  5. hdu 5139 数据的离线处理
  6. 利用python进行数据分析D2——ch03IPython
  7. JavaScript基础之Number对象和Math对象
  8. unity, undo
  9. pyotherside 试用
  10. 使用bash编写Linux shell脚本--复合命令