安装 OpenCV

首选,你需要找到对应你的操作系统的正确设置文件。

我发现,安装 OpenCV 是最难的一个环节。如果你遇到奇怪的、无法解释的错误,有可能是库崩溃了、32 与 64 比特的兼容问题等等。个人经验是,只用 Linux 虚拟机,从头安装 OpenCV 最简单。

安装好之后,你可以开启一个 Python 会话,敲出下面的代码,来测试它是否能工作:

$ python

>>> import cv2

>>>

如果没弹出任何错误,你就可以到下个环节了。

理解代码

记得拿好 face_detect.py 文本、abba.png 图片以及 haarcascade_frontalface_default.xml。下面,我把代码分解开来。

# Get user supplied values

imagePath = sys.argv[1]

cascPath = sys.argv[2]

将图片和 cascade 名字作为命令行参数传入。我们会用 Abba 图片和 OpenCV 提供的默认 cascade 来人脸检测。

# Create the haar cascade

faceCascade = cv2.CascadeClassifier(cascPath)

现在,我们创建一个 cascade,并用人脸 cascade 初始化。这把人脸 cascade 导入内存,所以它随时可以使用。记住,该 cascade 只是一个包含人脸检测数据的  XML 文件。

# Read the image

image = cv2.imread(imagePath)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

读取图片把它转化到灰度格式。

# Detect faces in the image

faces = faceCascade.detectMultiScale(

gray,

scaleFactor=1.1,

minNeighbors=5,

minSize=(30, 30),

flags = cv2.cv.CV_HAAR_SCALE_IMAGE

)

该函数做的就是检测人脸,是代码核心部分。所以,我们来过一遍选项。

DetectMultiScale 函数是一个检测物体的通用函数。我们在人脸 cascade 上调用它,它检测的就是人脸。第一个选项是灰度图片。

第二个是 scaleFactor。有的人脸离镜头近,会比其他人脸更大。ScaleFactor 对此进行补偿。

检测算法使用移动窗口来检测物体。在系统宣布检测到人脸之前,minNeighbors 会对当前其周围有多少物体进行定义。MinSize 给出每个窗口的大小。

我用的是这些领域的常用值。现实中,你会拿不同的值试验窗口尺寸、扩展因素等参数,直到找出最比较合适的那一个。

当该函数认为它找到一张人脸时,会返回一个矩形列表。下一步,我们会进行循环,直到它认为检测出了什么。

print "Found {0} faces!".format(len(faces))

# Draw a rectangle around the faces

for (x, y, w, h) in faces:

cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

该函数返回四个值:矩形的 x 和 y 坐标,以及它的高和宽。我们用这些值和内置的 rectangle() 函数,画出矩阵。

cv2.imshow("Faces found" ,image)

cv2.waitKey(0)

最后,我们显示该模型,等用户摁下按键。

检验结果

用 Abba 来检验。

$ python face_detect.py abba.png haarcascade_frontalface_default.xml

没有问题,试试另一张照片。

那两个东西不是脸,我们再试一次。我调整了参数,发现把 scaleFactor 调成 1.2 能去除错误检测。

发生了什么?第一张图片由高清摄像机近距离拍摄,第二章拍摄距离相对更远,而且可能是用手机拍的。这就是需要调整 scaleFactor 的原因。正如我说的,你需要按照实际场景设置算法,避免假正例。

这里,雷锋网(公众号:雷锋网)提醒大家,由于这基于机器学习,结果永远不会 100% 精确。大多数情况下,你会得到不错的结果。但算法偶尔会失误。

用网络摄像头

如果你想要用网络摄像头呢?OpenCV 从摄像头读取每一帧,你可以通过处理每一帧进行人脸检测。你需要一个性能强大的 PC,不过我的五岁大的笔记本用着还行。

今天就的文章就分享到这了,小编最后还为大家送上一份python大礼包【加君羊:605018913】帮助大家更好的学习!

25 行 Python 代码实现人脸检测——OpenCV 技术教程相关推荐

  1. python人脸检测代码_如何用不到25行Python代码实现人脸检测

    本文我们会讲讲怎样利用不到 25 行 Python 代码和开源库 OpenCV,以很简单的方式实现人脸识别. 在正式开始前,先提以下两点小小的建议:先别急着跳到代码部分,最好在前文理解一下代码是干什么 ...

  2. python好学吗 小木虫-25行Python代码完成人脸识别

    以下是Shantnu Tiwari的客座文章,作者有着在底层编程和嵌入式领域十年的工作经验.在发现Python语言之前的几年时间里,Shantnu Tiwari一直忍受着C/C++语言编程的不便,但P ...

  3. 如何用 200 行 JavaScript 代码实现人脸检测?

    在超市.地铁.车站等很多场景中,人脸识别已经被广泛应用,但是这个功能究竟是怎么实现的? 在本文中,将以 pico.js 库为例,分享实现轻量级人脸识别功能的具体开发过程 . 作者 | tehnokv ...

  4. python毕业设计论文-25 行 Python 代码毕业设计实现人脸识别

    文章来源:淘论文网 发布者:毕业设计 浏览量: 请确保用的是 OpenCV v2 你需要一个网络摄像头 OpenCV OpenCV 是最流行的计算机视觉库,原本用 C 和 C++ 开发,现在也支持 P ...

  5. 教你用10行Python代码实现目标检测(附代码)

    来源:大数据文摘 本文约2729字,建议阅读6分钟. 本文介绍了一个名为ImageAI 的Python库,集成了现今流行的深度学习框架和计算机视觉库,手把手教你构建自己的目标检测应用. 后台回复&qu ...

  6. python画人脸代码_[转]7行Python代码的人脸识别

    随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿.AI涉及的领域众多,图像识别中的人脸识别是其中一个有趣的分支.百度的BFR,Face++的开放平台,汉王,讯飞等等都提供了人脸识别的A ...

  7. 7行Python代码的人脸识别

    随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿.AI涉及的领域众多,图像识别中的人脸识别是其中一个有趣的分支.百度的BFR,Face++的开放平台,汉王,讯飞等等都提供了人脸识别的A ...

  8. 太逆天了,10行Python代码实现目标检测!!

    来源丨大数据文摘 编译丨邢畅.宁静 计算机视觉是人工智能的一个重要领域,是关于计算机和软件系统的科学,可以对图像和场景进行识别.理解.计算机视觉还包括图像识别.目标检测.图像生成.图像超分辨率重建等多 ...

  9. python目标识别_10行Python代码实现目标检测

    要知道图像中的目标是什么? 或者你想数一幅图里有多少个苹果? 在本文中,我将向你展示如何使用Python在不到10行代码中创建自己的目标检测程序. 如果尚未安装python库,你需要安装以下pytho ...

最新文章

  1. 真正的AI内行盛会!3 天 3 位大神,29场专题论坛,200+位领域专家
  2. 第三节 循环链表的Go语言实现
  3. 设置3d rotationY 旋转之后元件大小改变解决方案
  4. Android-----Activity生命周期
  5. 全志 修改485转CAN串口回显 Patch
  6. Redis之Hash数据结构
  7. (转)OOP(面向对象编程)的几大原则
  8. JAVA学习:maven开发环境快速搭建
  9. linux驱动编写(电源管理驱动)
  10. SpringBoot使用netty
  11. shiro 单点登录_Shiro权限管理框架(一):Shiro的基本使用
  12. PTA Left-pad Java
  13. GoLang之defer、panic、recover
  14. 推荐几款目前最热门的前端框架
  15. 120亿光年外发现大量水:为地球储量140万亿倍
  16. 2018云栖大会总结
  17. 什么是API接口?API接口的用途以及详细示例说明。
  18. 基础(一):SCSI硬盘与IDE硬盘有什么区别
  19. 修复恢复可疑的SQLServer数据库
  20. (三) 区块链数据结构 – 交易

热门文章

  1. MAC Book Pro 使用 libmodbus
  2. 猿人学第一题超详细-JS逆向过程
  3. 渐进式量产进阶!卡车自动驾驶进入商业化新周期
  4. 第十二届蓝桥杯 2021年省赛真题 (Java 大学A组) 第一场
  5. 一切都好,只是很想念
  6. termux安装numpy,matplotlib,pandas
  7. 【报告分享】2020小红书年中美妆洞察报告.pdf(附下载链接)
  8. 柱状图中最大的矩形多种解法
  9. 3dsmax UVW展开,然后在 BodyPaint 3D 中进行绘制
  10. Python练手小项目(6)随机取红黑球并计算概率