OpenCV检测篇(一)——猫脸检测

  • OpenCV检测篇一猫脸检测

    • OpenCV
    • OpenCV的Python环境配置
    • 猫脸检测
    • 代码
    • 效果
    • 举一反三
    • 下期预告

OpenCV

OpenCV是时下最流行的基于C++的开源计算机视觉库,它功能丰富,函数众多,从最基本的读写图片,到简单的图像处理(比如降噪滤波、边缘检测、图像变换、特征提取等),再到更加高级的行人检测、人脸识别、文本识别等,尽皆包含。在OpenCV提供的函数的基础上,我们可以很方便地开发自己的应用,实现自己的算法。总的来说,就是OpenCV非常强大。具体有多强大?那得用了才知道。

很多要做人脸识别,要用到SIFT特征的人都问过的一个问题是,为什么配置好opencv之后,却找不到人脸识别的头文件,找不到SIFT在哪?这是因为OpenCV3.0之后,把一些还在最新的,但不是很稳定的,还在测试阶段的东西放在了contrib模块里面。而且官方默认不带contrib模块。不幸的是,我们最想用的人脸识别和SIFT特征都在contrib里面。如果需要用的话,那就需要自己编译了。opencv在Visual Studio上的配置和编译contrib的方法可以参考我之前的博客。今天的内容仍然是用Python语言,最近用Python用着比较顺手。

OpenCV的Python环境配置

显然,跟众多基于C++的库一样, OpenCV也是有Python接口的。Python下配置OpenCV可以用下面两种方法:

  1. 官网下载并安装OpenCV之后,在目录\opencv\build\python\2.7\x64之下有一个cv2.pyd文件,把它拷贝到python安装目录下的\Lib\site-packages文件夹下面即可。需要注意的是版本要对应,比如这里就要对应64位的Python2.7。而且目前官方自带的只有Python2.7版本的包。如果想要其他版本怎么办?
  2. 那就要说到一个神奇的网站了:Unofficial Windows Binaries for Python Extension Packages,这里面包含了几乎所有的能用到的Python库的安装包,比如我们需要的OpenCV,这里可以找到下面这么多版本,可以适应不同的需求,还有编译的contrib版本的,简直是惊喜。

按照自己的环境下载相应的版本,然后还是用pip安装,命令如下:

pip install *.whl

请把星号换成对应的名字。

我这里用的是Python3.6包含contrib的64位的包。

猫脸检测

喵星人真的是要统治世界了。不然为什么OpenCV自带的检测器中除了人脸检测、行人检测这些意料之中就应该存在的检测器之外,还悄悄多出了猫脸检测器呢。

今天我们就来试一下这个猫脸检测到底 是什么样的?基于OpenCV的猫脸检测十分简单。用Python的话只有区区20行代码。其中20行代码中发挥主要作用的只有一个函数:

detectMultiScale()

此函数的作用是,在输入图像中检测不同尺寸的对象,返回包含对象的矩形框。它接收的参数:

1.image——输入图像

2.scaleFactor——表示每轮检测图像齿轮减少的比例

3.minNeighbors——指明对象要至少被检测到几次才能判定对象确实存在

4.minSize——检测对象的最小尺寸

5.maxSize——检测对象的最大尺寸

代码

按照惯例,注释齐全,无需多说。

# -*- coding=utf-8 -*-
import cv2
# 加载猫脸检测器
catPath = "haarcascade_frontalcatface.xml"
faceCascade = cv2.CascadeClassifier(catPath)
# 读取图片并灰度化
img = cv2.imread("cat1.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 猫脸检测
faces = faceCascade.detectMultiScale(gray,scaleFactor= 1.02,minNeighbors=3,minSize=(150, 150),flags=cv2.CASCADE_SCALE_IMAGE
)
# 框出猫脸并加上文字说明
for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)cv2.putText(img,'Cat',(x,y-7), 3, 1.2, (0, 255, 0), 2, cv2.LINE_AA)
# 显示图片并保存
cv2.imshow('Cat?', img)
cv2.imwrite("cat.jpg",img)
c = cv2.waitKey(0)

效果

运行Python脚本后效果如下:

举一反三

本文虽然只是在说猫脸检测,但是在OpenCV下,人脸检测、行人检测、人眼检测等都是同样的道理,同样的流程。只需要把最开始相应的检测器换掉,然后按照实际情况调节detectMultiScale()的参数即可。比如以下是人脸检测的效果:

下期预告

有了本文的基础,再看下一篇内容就比较简单了。下期内容:

OpenCV检测篇(二)——笑脸检测(微笑检测)

最近申请了微信公众号,感兴趣的同学可以左侧扫码关注。

OpenCV检测篇——猫脸检测相关推荐

  1. OpenCV神技——人脸检测,猫脸检测

    简介   OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 ...

  2. 创意赛第二季又来了,PaddleHub人脸关键点检测实现猫脸人嘴特效

    前段时间,下班后闲来无事,参加了百度PaddleHub的AI人像抠图创意赛,凭借着大家的阅读量,获得了一个第三名,得了一个小度音响,真香啊! 对,说的是我 小奖品 PaddleHub创意赛第二期又出来 ...

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

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

  4. Python实战案例,图像识别技术OpenCV,Python实现猫脸检测

    开发工具 Python版本:3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 简单地讲一讲H ...

  5. 运用特征脸方法的基于Opencv的猫脸检测实现

    本文禁止转载.抄袭,请尊重作者权利. 使用特征脸方法的基于Opencv的猫脸检测实现 摘要 目前,在计算机视觉和模式识别领域,脸识别技术是一个很活跃的课题,人脸识别的方法已经十分丰富,而对于日常生活中 ...

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

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

  7. CV:利用cv2自带两步法haarcascade_frontalcatface.xml实现对猫脸检测

    CV:利用cv2自带两步法haarcascade_frontalcatface.xml实现对猫脸检测 目录 输出结果 实现代码 输出结果 实现代码 @author: niu ''' import cv ...

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

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

  9. 又发现一条喵星人将要统治地球的新线索(OpenCV猫脸检测)

    都说喵星人快要统治地球了,各种证据正在被发现-- OpenCV的开发人员似乎也发现了些什么,在其发布版本里悄悄留下了些线索: 在OpenCV-Python安装包目录的data文件夹下,有2个" ...

最新文章

  1. 程序员写代码崩溃,路过的暖心美团骑手:我帮你看看!
  2. CCF201612-4 压缩编码(100分)
  3. 分享关于搭建高性能WEB服务器的一篇文章
  4. 强跟踪卡尔曼滤波STF估算车辆质量——matab simulink仿真
  5. Think in Java第四版 读书笔记5第11章
  6. 切换到 oracle的 hr用户下面练习
  7. 15寸计算机显示器,苹果确认15寸RMBP支持全球首款5K显示器
  8. AI 降噪、多平台支持,在线课程背后的黑科技大公开!
  9. 如何在工作中如鱼得水?有三点很重要
  10. Java 反射常用方法
  11. 帮助朋友干活,平生第一次收到月饼
  12. python同花顺交易接口_TradeApi为A股程序化交易接口2.9.0发布
  13. Clang编译Objective-C
  14. ReentrantLock加锁解锁线程入队源码分析
  15. 怎么样用计算机弹出小星星,【钢琴入门自写教程 1】小星星弹奏
  16. 麦凯隆全屋分质供水 保障家庭饮用水安全与健康
  17. 河南本科计算机科学与技术排名,河南计算机科学与技术专业大学排名
  18. camera.swf java,ipcamera-for-android 手机变成IP Camera
  19. 怎么理解python语言是一种强类型语言_Python 到底是强类型语言,还是弱类型语言?...
  20. [PASECA2019]honey_shop

热门文章

  1. OpenFlow交换机【ACM SIGCOMM顶会论文笔记】
  2. 题目 1527: 排队打水问题
  3. 想去前端培训,考察了这几个机构 ,分享一下
  4. C++中的new、operator new与placement new
  5. 【工具】eclipse不自动弹出提示
  6. ADS系列 - RLC器件滤波器设计教程1
  7. Anaconda详细安装教程
  8. 面试总结(三)——连连支付
  9. python操作xlsx文件的资料
  10. 校内网开心农场游戏的外挂怎么写呢?