Python实战案例,图像识别技术OpenCV,Python实现猫脸检测
开发工具
Python版本:3.6.4
相关模块:
cv2模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
简单地讲一讲Haar分类器,也就是Viola-Jones识别器。
详细的原理说明可参考相关文件中的两篇论文:
Rapid Object Detection using a Boosted Cascade of Simple Features;
Robust Real-Time Face Detection.
(1)Haar-like特征
Haar-like矩形特征是用于物体检测的数字图像特征,由两个或者多个相邻的黑白矩形组合而成,矩形的特征值是白色矩形的灰度值之和减去黑色矩形的灰度值之和。一般地,我们认为矩形特征对一些简单的图形结构(线段、边缘)等较为敏感:
具体到猫脸检测而言,我们认为把这样的矩形放到一个非猫脸区域后获得的特征值与放到一个猫脸区域后获得的特征值是不同的。
利用上述基于特征的检测算法,不仅能够编码特定区域的状态,而且效率高于基于像素的检测算法。
(2)积分图
下面我们来考虑一下如何计算矩形的特征值。对图像中的任意一点A(x, y),定义该点的积分图为其左上角的所有像素值之和,即:
因此,要计算矩形模板的特征值,也就是计算两个区域之间的像素和之差,只需要用特征区域端点的积分图来进行简单的加减运算就可以了:
(3)Haar分类器
Haar分类器是一个监督学习分类器,要进行目标检测,首先要对图像进行直方图均衡化和归一化处理,然后检测里面是否包含要检测的物体。
流程框架图为(Haar分类器本质上由Haar特征提取器、离散强分类器以及强分类级联器组成):
Haar分类器使用Adaboost算法,但是把它组织为了筛选式的级联分类器,在任意一级计算中,一旦获得输入内容不在检测类中的结论,便终止计算,只有通过所有级别的分类器,才可认为检测到了目标物体,以此来提高检测效率。
关于AdaBoost算法,我就不展开介绍了,有兴趣的同学可以自己查找相关资料进行学习。以后有时间我再对其进行详细的介绍。
(4)适用范围
适用于“基本刚性”的物体检测,如脸、汽车、人体和自行车等等。
(5)总结
Viola-Jones目标检测框架的核心思想是通过滑动窗口扫描图像(多尺度的扫描),然后将每个窗口的Haar特征值输入到筛选式的级联分类器中来判断该窗口内是否含有目标物体以实现目标检测。
具体实现
OpenCV中内置了基于Viola-Jones目标检测框架的Haar分类器,并提供了猫脸检测预训练好的模型。因此实现起来十分简单。
具体实现过程详见相关文件中的源代码。
效果演示
使用方式:
修改源代码中的图片名为自己需要检测的图片:
在cmd窗口运行DetectCatFace.py文件即可。
效果:
原图1:
检测结果1:
原图2:
检测结果2(并不能很好地区分狗狗和猫咪):
文章c#教程到这vb.net教程里就结束了,感谢python教程你的观看,下篇文章分享分析个人音乐收藏。
为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。
Python实战案例,图像识别技术OpenCV,Python实现猫脸检测相关推荐
- Python实战案例:金庸的功夫流派、人物关系的分析案例(上)
Python实战案例:金庸的功夫流派.人物关系的分析案例(上) 一.项目说明 在香港的探案剧中, 经常见到这样的场景,为了分析某一桩谋杀案或者是失踪案,会把案件的可疑人员和与被害者的关系人员全部找出来 ...
- Python实战案例:旅游方面博文的数据分析
Python实战案例:旅游方面博文的数据分析 一.旅游方面博文数据展示 数据分析的出现便利了每个人,企业,竞争者.在以前的时候,如果想要了解市场的动向,就设计了调查问卷或者现场采访的方式,以至于被很多 ...
- python流程控制-实战案例手把手教你Python流程控制技巧
原标题:实战案例手把手教你Python流程控制技巧 作者:PianoOrRock 来源: http://blog.csdn.net/pianoorrock/article/details/711315 ...
- Python实战案例:使用Pygame开发游戏翻牌子(上)
Python实战案例:使用Pygame开发游戏翻牌子(上) 一.翻牌子游戏介绍 翻牌子的原意是古代皇帝在晚上就寝时从三千佳丽中选择的某个女子,这里将它改版成对对碰.如果翻开第一张牌子后面的女子,再翻开 ...
- 用Python+OpenCV+PIL构建猫脸识别器
在这篇文章中,我将向你展示如何编写一个检测猫脸的简单程序.在我的人脸检测帖子中,我演示了如何使用Python检测人脸. 当我用图像测试代码时,我发现其中有些图像中有动物,但是我们创建的人脸检测模型并不 ...
- Python实战技巧(9)Python发送邮件
Python实战技巧(1)Python字典类型数据如何递归地通过点'.'的方式访问 Python实战技巧(2)Python的pdb调试代码方法详解 Python实战技巧(3)多版本兼容安装部署(py2 ...
- 【python】15行代码实现猫脸检测(opencv)
文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...
- Python实战技巧(10)Python解析邮件
Python实战技巧(1)Python字典类型数据如何递归地通过点'.'的方式访问 Python实战技巧(2)Python的pdb调试代码方法详解 Python实战技巧(3)多版本兼容安装部署(py2 ...
- OpenCV-Python实战(番外篇)——想要识别猫咪的情绪?从猫脸检测开始
OpenCV-Python实战(番外篇)--想要识别猫咪的情绪?从猫脸检测开始 前言 猫脸检测 使用级联检测器检测猫脸 使用深度学习模型检测图片中的猫 将 OpenCV 猫脸检测程序部署在 Web 端 ...
最新文章
- ftp connect: No route to host 解决过程
- margin-top失效的解决方法
- Kubernetes — MACVLAN CNI
- 实现一个队列类,该类用两个栈来实现
- linux内核md5,浅谈MD5及简单使用
- mac easyconnect不能双击打开_轻松解决Mac上「应用程序“xxx”不能打开」的问题
- 多重循环练习之九九乘法表
- Cannot resolve de.codecentric:spring-boot-admin-starter-server:2.4.0-SNAPSHOT
- 使用COSBench工具对ceph s3接口进行压力测试--续
- logback-spring.xml
- 【转】NodeJS教程--基于ExpressJS框架的文件上传
- 翻译连载 | JavaScript轻量级函数式编程-第5章:减少副作用 |《你不知道的JS》姊妹篇...
- 海洋工作室——网站建设专家:全数据库比较工具
- 疯狂python讲义pdf_重磅!Python再次第一,Java和C下降,凭什么?
- iOS开发之NSData和NSString相互转换
- Unity实现打飞碟小游戏
- 使用Sencha cmd安装extjs6
- 一、云计算-云平台-国产-华为-FusionSphere+HCIE Cloud相关知识点+笔试题库
- 「DLP-KDD 2021征文」及上届论文全集,包含深度学习推荐/广告系统、多目标、模型服务等
- 【无法关闭的网页】HTML网页源码分享#无法拒绝的表白源码