开发工具

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实现猫脸检测相关推荐

  1. Python实战案例:金庸的功夫流派、人物关系的分析案例(上)

    Python实战案例:金庸的功夫流派.人物关系的分析案例(上) 一.项目说明 在香港的探案剧中, 经常见到这样的场景,为了分析某一桩谋杀案或者是失踪案,会把案件的可疑人员和与被害者的关系人员全部找出来 ...

  2. Python实战案例:旅游方面博文的数据分析

    Python实战案例:旅游方面博文的数据分析 一.旅游方面博文数据展示 数据分析的出现便利了每个人,企业,竞争者.在以前的时候,如果想要了解市场的动向,就设计了调查问卷或者现场采访的方式,以至于被很多 ...

  3. python流程控制-实战案例手把手教你Python流程控制技巧

    原标题:实战案例手把手教你Python流程控制技巧 作者:PianoOrRock 来源: http://blog.csdn.net/pianoorrock/article/details/711315 ...

  4. Python实战案例:使用Pygame开发游戏翻牌子(上)

    Python实战案例:使用Pygame开发游戏翻牌子(上) 一.翻牌子游戏介绍 翻牌子的原意是古代皇帝在晚上就寝时从三千佳丽中选择的某个女子,这里将它改版成对对碰.如果翻开第一张牌子后面的女子,再翻开 ...

  5. 用Python+OpenCV+PIL构建猫脸识别器

    在这篇文章中,我将向你展示如何编写一个检测猫脸的简单程序.在我的人脸检测帖子中,我演示了如何使用Python检测人脸. 当我用图像测试代码时,我发现其中有些图像中有动物,但是我们创建的人脸检测模型并不 ...

  6. Python实战技巧(9)Python发送邮件

    Python实战技巧(1)Python字典类型数据如何递归地通过点'.'的方式访问 Python实战技巧(2)Python的pdb调试代码方法详解 Python实战技巧(3)多版本兼容安装部署(py2 ...

  7. 【python】15行代码实现猫脸检测(opencv)

    文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...

  8. Python实战技巧(10)Python解析邮件

    Python实战技巧(1)Python字典类型数据如何递归地通过点'.'的方式访问 Python实战技巧(2)Python的pdb调试代码方法详解 Python实战技巧(3)多版本兼容安装部署(py2 ...

  9. OpenCV-Python实战(番外篇)——想要识别猫咪的情绪?从猫脸检测开始

    OpenCV-Python实战(番外篇)--想要识别猫咪的情绪?从猫脸检测开始 前言 猫脸检测 使用级联检测器检测猫脸 使用深度学习模型检测图片中的猫 将 OpenCV 猫脸检测程序部署在 Web 端 ...

最新文章

  1. 有限个极限运算及常见错误小结
  2. 台湾国立大学郭彦甫Matlab教程笔记(8)文件读写
  3. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0
  4. 实例对象的属性和原型对象中的属性重名问题 神奇的原型链 继承 继承案例
  5. HDU3939(毕达哥拉斯三元组的解)
  6. 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求...
  7. 亲密接触VC6.0编译器
  8. mysql ajax excel文件_关于导入EXCEL和AJAX
  9. java 获取方法_Java 反射理解(三)-- Java获取方法信息
  10. Vue源码后记-vFor列表渲染(3)
  11. F5获取vs、pool、member当前、峰值、总计连接数的oid
  12. 离散数学期末复习概念_复习第1部分中的基本概念
  13. 如何评价单片机大神郭天祥?
  14. H3C服务器出厂系统密码,H3C S3100交换机不知道密码如何恢复出厂设置
  15. 个人任务五——事后诸葛亮项目回顾
  16. 文件追加 c语言,c语言追加方式想文件里面写东西
  17. C++中运行一个程序的内存分配情况及qt中的内存管理机制
  18. 调焦后焦实现不同距离成像_相机的“对焦”和“变焦”,这二者有什么区别?...
  19. 【Python学习笔记】36:抓取去哪儿网的旅游产品数据
  20. 英雄联盟客户端美化(一)客户端载入图美化

热门文章

  1. 【不到1G的win10,老机专用】星岚技术 Win10 x64 极限精简版 V2021.5
  2. 计算机应用技术个人研修总结,信息技术个人研修总结(精选7篇)
  3. 第三十七周总结——大二下学期开学总结
  4. 【速记】openwrt - 编译、刷固件(资料整理)
  5. 读《微波工程(第三版)》笔记 (5:平面波的通解;一些补充)
  6. PHP GD画图步骤
  7. CSS学习笔记(跟随b站pink老师)
  8. odoo14 | odoo14的国家/省/市区县联动,不自写模块仅通过odoo来实现的方法
  9. 车载MV打包下载 格式不识别
  10. 2022柚子EOS联盟系统程序源码+功能很完善