Python实战之OpenCV实现猫脸检测

作者:weixin_43649691 时间:2021-02-07 16:56:24 

开发工具

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矩形特征是用于物体检测的数字图像特征,由两个或者多个相邻的黑白矩形组合而成,矩形的特征值是白色矩形的灰度值之和减去黑色矩形的灰度值之和。一般地,我们认为矩形特征对一些简单的图形结构(线段、边缘)等较为敏感:

Python实战之OpenCV实现猫脸检测

具体到猫脸检测而言,我们认为把这样的矩形放到一个非猫脸区域后获得的特征值与放到一个猫脸区域后获得的特征值是不同的

利用上述基于特征的检测算法,不仅能够编码特定区域的状态,而且效率高于基于像素的检测算法。

(2)积分图

下面我们来考虑一下如何计算矩形的特征值。对图像中的任意一点A(x, y),定义该点的积分图为其左上角的所有像素值之和,即:

Python实战之OpenCV实现猫脸检测

因此,要计算矩形模板的特征值,也就是计算两个区域之间的像素和之差,只需要用特征区域端点的积分图来进行简单的加减运算就可以了:

Python实战之OpenCV实现猫脸检测

(3)Haar分类器

Haar分类器是一个监督学习分类器,要进行目标检测,首先要对图像进行直方图均衡化和归一化处理,然后检测里面是否包含要检测的物体。

流程框架图为(Haar分类器本质上由Haar特征提取器、离散强分类器以及强分类级联器组成):

Python实战之OpenCV实现猫脸检测

Haar分类器使用Adaboost算法,但是把它组织为了筛选式的级联分类器,在任意一级计算中,**一旦获得输入内容不在检测类中的结论,便终止计算,只有通过所有级别的分类器,才可认为检测到了目标物体,**以此来提高检测效率。

关于AdaBoost算法,我就不展开介绍了,有兴趣的同学可以自己查找相关资料进行学习。以后有时间我再对其进行详细的介绍。

(4)适用范围

适用于“基本刚性”的物体检测,如脸、汽车、人体和自行车等等。

(5)总结

Viola-Jones目标检测框架的核心思想是通过滑动窗口扫描图像(多尺度的扫描),然后将每个窗口的Haar特征值输入到筛选式的级联分类器中来判断该窗口内是否含有目标物体以实现目标检测。

具体实现

OpenCV中内置了基于Viola-Jones目标检测框架的Haar分类器,并提供了猫脸检测预训练好的模型。因此实现起来十分简单。

具体实现过程详见相关文件中的源代码。

效果演示

使用方式:

修改源代码中的图片名为自己需要检测的图片:

Python实战之OpenCV实现猫脸检测

在cmd窗口运行DetectCatFace.py文件即可。

效果:

原图1:

Python实战之OpenCV实现猫脸检测

检测结果1:

Python实战之OpenCV实现猫脸检测

原图2:

Python实战之OpenCV实现猫脸检测

检测结果2(并不能很好地区分狗狗和猫咪):

Python实战之OpenCV实现猫脸检测

来源:https://blog.csdn.net/weixin_43649691/article/details/118162919

标签:Python,OpenCV,图像识别
0
投稿

猜你喜欢

  • PHP实现HTML页面静态化的方法

    2023-10-15 04:09:59
  • JS页内查找关键词的高亮显示

    2013-07-18 21:13:54
  • Python OpenCV实现图形检测示例详解

    2023-05-23 15:36:39
  • Python中的异常处理学习笔记

    2023-06-26 05:04:29
  • python pandas中索引函数loc和iloc的区别分析

    2021-08-31 21:44:21
  • 常用ASCII 码对照表

    2007-08-21 14:35:00
  • 垂直无缝滚动图片(兼容性好)实例教程源码下载

    2010-04-06 12:16:00
  • asp access数据库并生成XML文件范例

    2011-03-29 10:49:00
  • Pycharm无法正常安装第三方库的几条应对方法汇总

    2021-07-18 00:59:52
  • ASP怎么读取指定xml 的节点

    2008-04-28 13:12:00
  • 简单的XML操作:XML文件创建

    2008-04-25 10:31:00
  • python tkinter模块的简单使用

    2021-11-20 16:52:33
  • Python+OpenCV实现图像融合的原理及代码

    2022-08-01 00:03:52
  • PHP如何利用P3P实现跨域

    2023-11-23 20:16:58
  • JS+CSS实现的日本门户网站经典选项卡导航效果

    2023-09-04 03:40:24
  • 如何决定是否将登录内容保存到Cookie里?

    2009-12-16 18:54:00
  • Django静态资源部署404问题解决方案

    2021-05-20 21:28:46
  • Python数据存储之 h5py详解

    2023-09-18 00:04:48
  • Python切片操作实例分析

    2022-05-02 17:49:25
  • python简单商城购物车实例代码

    2022-10-28 02:16:37
  • asp之家 网络编程 m.aspxhome.com