申请专栏作者
投稿发布
您的当前位置:主页 > 机器视觉 > 正文

50行代码运用Python+OpenCV来实现人脸追踪

来源:未知 时间:2018-09-02
请点击下面的广告后浏览!
??首先先感谢朋友们的关注。当然我更希望认识与计算机相关的领域的朋友咱们一起探讨交流。重点说一下,我是真人,不是那些扒文章的自媒体组织,大家可以相互交流的!

50行代码运用Python+OpenCV实现人脸追踪

可思yabo88滚球-人工智能资讯平台sykv.com

本篇文章我们来讲一下关于AI相关的人脸追踪,人脸识别相关的一些知识。当然本篇教程为(上)部分,讲一下利用python+opencv来实现人脸识别与追踪,下部分,用python来通过指纹对比实现人脸验证、人脸解锁(大家感兴趣的可以提前关注哦)。 可思yabo88滚球-人工智能资讯平台sykv.com

这两节课呢,代码量都不是很多,鄙人尽量多注释点,便于大家理解。那我们就不多啰嗦废话了,直接上干货!

可思yabo88滚球sykv.com

50行代码运用Python+OpenCV实现人脸追踪

可思yabo88滚球sykv.com,sykv.cn

OpenCV:

opencv目前来讲是十分流行的视觉库,而且可以支持多语言。说到opencv就不得不说它的cascades分类器。

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

如果我们要判断一张图片是不是有一张脸,早期方式是通过成千上万的分类器去从头匹配到尾,这样看并没有什么什么毛病,但判断的图片多了呢?那可能需要猴年马月。opencv的cascades呢,就把这些用来判断人脸特征的容器划分成多块层层匹配,到一层不匹配就被丢弃。

可思yabo88滚球-www.sykv.cn,sykv.com

这好比一群人去公司面试,公司第一个要求是只要男人,那一批女人就走了,公司说只要本科,一批专科走了,公司说要两年工作经验的,又会走一批,直到最后。这样的工作量比每个人面试不管男女都过一遍流程轻松的多。

可思yabo88滚球sykv.com,sykv.cn

环境拓扑:

操作系统:windows7 可思yabo88滚球sykv.com,sykv.cn

python版本:2.7.14

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

opencv版本:3.x

内容来自可思yabo88滚球sykv.com

环境配置:

1.安装python(额...这个当我没说)

内容来自可思yabo88滚球sykv.com

2.安装Opencv 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

这个从官网下载就OK啦:https://opencv.org/

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

印象中我记得当初我下载的是3.3版本,但现在好像Github最近访问不了了,我不知道是不是我的Hosts的问题还是怎么着,大家如果能访问可以给我留个言,我修复下hosts文件。如果大家也访问不了,可以留言或者私信,我把以前下载的opencv打包发给大家。 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球-人工智能资讯平台sykv.com

下载完之后直接解压就行,推荐解压到跟你的python安装的父路径。

可思yabo88滚球sykv.com,sykv.cn

3.使用pip安装numpy

内容来自可思yabo88滚球sykv.com

打开cmd输入:

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com
 内容来自可思yabo88滚球sykv.com 
  1. pip?install?numpy?

进行安装,安装完毕后会给提示。 可思yabo88滚球sykv.com

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球sykv.com,sykv.cn

4.找到你的opencv安装路径(比如我的是D盘) 内容来自可思yabo88滚球sykv.com

复制D:opencvopencv3.xuildpython.7\x64路径下的cv2.py 本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

注意:我的windows版本为64位所以我选择的是X64,如果你的是32位的话你需要选择X86文件夹下的cv2.pyd

可思yabo88滚球sykv.com,sykv.cn

复制完之后,粘贴到你的python安装路径下的Lib/site-packages这个文件夹下。

可思yabo88滚球sykv.com

完成上面这些就基本OK啦,我们在写代码之前先来测试一下,环境是否配置成功。 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

在CMD命令行下运行python:

可思yabo88滚球sykv.com,sykv.cn
 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络 
  1. import?numpy??
  2. import?cv2?

如果没有报错,说明安装完成。

可思yabo88滚球sykv.com,sykv.cn

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球-人工智能资讯平台sykv.com

实现原理:

1.调用计算机摄像头

可思yabo88滚球sykv.com,sykv.cn

 

可思yabo88滚球-www.sykv.cn,sykv.com

  1. cv2.Videocamture(0)?

2.将摄像头yabo88滚球按帧来取(相当于给每一帧图片的人脸加框框)

可思yabo88滚球sykv.com,sykv.cn
 可思yabo88滚球sykv.com,sykv.cn 
  1. cam.red()?

3.将每一帧摄像头记录的yabo88滚球带入opencv让classifier去判断人脸

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

 
可思yabo88滚球-www.sykv.cn,sykv.com
  1. detectMultiScale()?

4.如果存在人脸给人脸标记画框 本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

 
本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处
  1. cv2.rectangle()?

5.输出画框后的帧动画

可思yabo88滚球-人工智能资讯平台sykv.com
 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球 
  1. cv2.imshow('My?Camera',frame)?

代码实现:

第一步定义一个识别函数: 可思yabo88滚球-人工智能资讯平台sykv.com

先放图片,这个地方比较重要,我在下面会详细的说一下。

可思yabo88滚球-www.sykv.cn,sykv.com

50行代码运用Python+OpenCV实现人脸追踪

可思yabo88滚球sykv.com,sykv.cn

(代码上部分) 可思yabo88滚球-www.sykv.cn,sykv.com

6-7行代码说明: 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

首先创建classifier,为什么要弄这个呢? 可思yabo88滚球sykv.com,sykv.cn

引用的haarcascade开头的文件是opencv里面关于人脸级联分类器,你在opencv文件夹下的sourcesdatahaarcascades可以看到:

可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

说明功能:

可思yabo88滚球sykv.com

人脸检测器(默认):haarcascade_frontalface_default.xml

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

人脸检测器(快速Harr):haarcascade_frontalface_alt2.xml

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

人脸检测器(侧视):haarcascade_profileface.xml 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

眼部检测器(左眼):haarcascade_lefteye_2splits.xml 本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

眼部检测器(右眼):haarcascade_righteye_2splits.xml

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

嘴部检测器:haarcascade_mcs_mouth.xml 内容来自可思yabo88滚球sykv.com

鼻子检测器:haarcascade_mcs_nose.xml

内容来自可思yabo88滚球sykv.com

身体检测器:haarcascade_fullbody.xml 可思yabo88滚球-www.sykv.cn,sykv.com

人脸检测器(快速LBP):lbpcascade_frontalface.xml

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

1:haarcascade_frontalface_alt.xml 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

Stump-based 20x20 gentle adaboost frontal face detector.

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

2:haarcascade_frontalface_alt2.xml 可思yabo88滚球sykv.com,sykv.cn

Tree-based 20x20 gentle adaboost frontal face detector.

可思yabo88滚球-人工智能资讯平台sykv.com

3:haarcascade_frontalface_alt_tree.xml

可思yabo88滚球-人工智能资讯平台sykv.com

Stump-based 20x20 gentle adaboost frontal face detector.This detector uses tree of stage classifiers instead of a cascade

可思yabo88滚球-人工智能资讯平台sykv.com

4:haarcascade_frontalface_default.xml 可思yabo88滚球sykv.com

Stump-based 24x24 discrete(?) adaboost frontal face detector. 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

以上这四个鄙人都测试过,haarcascade_frontalface_alt.xml这个效果是最好的,其它的大家可以单个测试。

内容来自可思yabo88滚球sykv.com

设定灰度:

可思yabo88滚球-人工智能资讯平台sykv.com

灰度的设定是为了增强面部轮廓的对比度,这是增加精度必不可少的。

可思yabo88滚球-www.sykv.cn,sykv.com

核心代码解剖:

可思yabo88滚球sykv.com,sykv.cn

DetectMultiScale 函数是一个检测物体的通用函数,我们介绍一下:

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

50行代码运用Python+OpenCV实现人脸追踪

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

gray:这是转换成灰度后的图片

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

scaleFactor:补偿参数,一般设置值为1.1-1.5比较好,效果大家自己改着看 可思yabo88滚球-www.sykv.cn,sykv.com

minNeighbors:对当前其周围有多少物体进行定义 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

minSize:设定窗口大小 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

flags:略抽象,选择默认或者上图即可 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

画方框:

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

定义xywh利用for循环读取faces变量里面的坐标,然后通过rectangle()函数进行画方框。 可思yabo88滚球sykv.com,sykv.cn

代码下部分: 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球sykv.com,sykv.cn

(代码下部分)

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

OK,写完代码之后,我们把上部分代码跟下部分代码拼凑起来,运行下试一下:

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

50行代码运用Python+OpenCV实现人脸追踪 可思yabo88滚球sykv.com,sykv.cn

大家凑合看吧,我笔记本cam有点渣,不过随着人的晃动,都可以完美的识别出来,由于没法上视频,大家就自行测试吧。 可思yabo88滚球sykv.com

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片 匿名?

关于我们?? 免责声明?? 广告合作?? 版权声明?? 联系方式?? 原创投稿?? 网站地图??

Copyright?2005-2019 Sykv.com 可思yabo88滚球 版权所有 ?? ICP备案:京ICP备14056871号

人工智能资讯?? 人工智能资讯?? 人工智能资讯?? 人工智能资讯

?扫码入群
咨询反馈
扫码关注

微信公众号

返回顶部
关闭