Python实战之OpenCV实现猫脸检测

开发工具

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(并不能很好地区分狗狗和猫咪):

到此这篇关于Python实战之OpenCV实现猫脸检测的文章就介绍到这了,更多相关OpenCV实现猫脸检测内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • opencv实现颜色检测

    本文实例为大家分享了opencv实现颜色检测的具体代码,供大家参考,具体内容如下 若要在OPencv 中实现颜色检测,首先要将待检测图像转换到HSV颜色空间中,但因为颜色是一个特定的取值范围,并且在我们不知情的情况下,只能通过TrackBar 来控制颜色阈值,用以探究各颜色的取值范围. 程序: #include <iostream> #include <opencv2/highgui.hpp> // 说是说gui 具体什么gui 不清楚 #include <opencv2/i

  • python调用opencv实现猫脸检测功能

    Python 小猫检测,通过调用opencv自带的猫脸检测的分类器进行检测. 分类器有两个:haarcascade_frontalcatface.xml和 haarcascade_frontalcatface_extended.xml.可以在opencv的安装目录下找到 D:\Program Files\OPENCV320\opencv\sources\data\haarcascades 小猫检测代码为: 1. 直接读取图片调用 import cv2 image = cv2.imread("ca

  • Python-OpenCV实现图像缺陷检测的实例

    在Jupyter Notebook上使用Python+opencv实现如下图像缺陷检测.关于opencv库的安装可以参考:Python下opencv库的安装过程与一些问题汇总. 1.实现代码 import cv2 import numpy from PIL import Image, ImageDraw, ImageFont #用于给图片添加中文字符 def ImgText_CN(img, text, left, top, textColor=(0, 255, 0), textSize=20):

  • python基于Opencv实现人脸口罩检测

    一.开发环境 python 3.6.6 opencv-python 4.5.1 二.设计要求 1.使用opencv-python对人脸口罩进行检测 三.设计原理 设计流程图如图3-1所示, 图3-1 口罩检测流程图 首先进行图片的读取,使用opencv的haar鼻子特征分类器,如果检测到鼻子,则证明没有戴口罩.如果检测到鼻子,接着使用opencv的haar眼睛特征分类器,如果没有检测到眼睛,则结束.如果检测到眼睛,则把RGB颜色空间转为HSV颜色空间.进行口罩区域的检测.口罩区域检测流程是首先把

  • Python实战之OpenCV实现猫脸检测

    开发工具 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

  • python实战之PyQt5实现漫画脸

    目录 最终效果 前言 1.PyQt5的安装. 2.qt designer 布局的使用. 3.百度智能云api的调用. 4.调控界面的控件. 5.最终成果 6.总结 最终效果 前言 这是最近在学qt这个东西,然后又学会了调用api,然后就想了用pyqt5做一个GUI界面,后期也可以打包分享给其他人使用,所以就最近就写了一个简便的gui界面,有点不好看,大家凑合看一下,主要是学思路的哈! 1.PyQt5的安装. 1.PyQt5库的安装. PyQt5的安装有两个办法. 1:pip install -x

  • Python实战之基于OpenCV的美颜挂件制作

    目录 基于 Snapchat 的增强现实 胡子挂件融合 完整代码 眼镜挂件融合 完整代码 基于 Snapchat 的增强现实 胡子挂件融合 第一个项目中,我们将在检测到的脸上覆盖了一个小胡子.我们可以使用从摄像头捕获的连续视频帧,也可以使用单张测试图像.在进行实际讲解程序的关键步骤前,首先查看应用程序预期输出的结果图像: 项目的第一步是检测图像中的人脸.如上图所示,使用青色矩形绘制图像中检测到的人脸的位置和大小:接下来迭代图像中所有检测到的人脸,在其区域内搜索鼻子,粉红色矩形表示图像中检测到的鼻

  • C++ OpenCV实战之零部件的自动光学检测

    目录 一.背景 二.基础知识 三.代码实现 1.实现多窗口展示 2.降噪处理 3.背景去除 4.连通图实现 5.计算连通域面积 6.轮廓检测 四.总结 一.背景 首先任务背景是AOI(自动光学检测) 最重要的目的在于:将前景和物体进行分割与分类: 场景示意图: 需要注意,在螺母的传送带上,需要有前光和背光,给物体打光才能够拍摄清晰的图像: 二.基础知识 首先分为以下几步: 1.噪声抑制(预处理) 2.背景移除(分割) 3.二值化 4.连通域.轮廓查找算法 降噪算法 先使用中值滤波对椒盐噪声进行过

  • python版opencv摄像头人脸实时检测方法

    OpenCV版本3.3.0,注意模型文件的路径要改成自己所安装的opencv的模型文件的路径,路径不对就会报错,一般在opencv-3.3.0/data/haarcascades 路径下 import numpy as np import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') cap = cv2.VideoCapture(0) while True: ret,img = ca

  • Python下应用opencv 实现人脸检测功能

    使用OpenCV's Haar cascades作为人脸检测,因为他做好了库,我们只管使用. 代码简单,除去注释,总共有效代码只有10多行. 所谓库就是一个检测人脸的xml 文件,可以网上查找,下面是一个地址: https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml 如何构造这个库,学习完本文后可以参考: http://note.sonots.com/Sc

  • python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)

    一.利用直方图的方式进行批量的图片缺陷检测(方法简单) 二.步骤(完整代码见最后) 2.1灰度转换(将原图和要检测对比的图分开灰度化) 灰度化的作用是因为后面的直方图比较需要以像素256为基准进行相关性比较 img = cv2.imread("0.bmp") #原图灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) #循环要检测的图,均灰度化 for i in range(1, 6): t1=cv2.cvtColor(cv2.imread

  • Python Opencv实现单目标检测的示例代码

    一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全置为0,然后通过其它方法找到目标的外接矩形并分割,在此选择一张前景和背景相差较大的图片作为示例. 环境:python3.7 opencv4.4.0 二 背景前景分离 1 灰度+二值+形态学 轮廓特征和联通组件 根据图像前景和背景的差异进行二值化,例如有明显颜色差异的转换到HSV色彩空间进行分割. 1

随机推荐