点击关注我哦

一篇文章带你了解Python实现猫脸识别

本文将向您展示如何编写一个简单的猫脸检测程序。在程序中同时结合了人脸和猫脸的检测模型,让机器学会区分人和猫。这听起来就像是非常有趣的一个项目~

Library

在进行机器学习项目时,必须学会安装和导入库,这将使我们的工作事半功倍。在这个项目中将用到OpenCV和Pillow这两个库。OpenCV是一个高度优化的库,专注于实时应用程序。Pillow则是一个很棒的图像处理库。Pillow库常常使用“pip install pillow”进行安装,但是在我们实际import使用时,需要import PIL进行使用。这两个其实是同一种意思,不必感到困惑。

OpenCV(开源计算机视觉库)是一个开源计算机视觉和机器学习软件库。OpenCV的构建旨在为计算机视觉应用程序提供通用的基础结构,并加速在商业产品中使用机器感知。作为BSD许可的产品,OpenCV使企业可以轻松地使用和修改代码。

上述两个库的安装过程非常简单,在cmd窗口中写入以下代码行即可:

pip install opencv-python pillow

安装完成后,我们可以将其导入到我们的程序中:

import cv2
from PIL import Image

OpenCV已经包含许多针对面部,眼睛,微笑等进行过预训练的分类器。这些.xml文件存储在GitHub文件夹中。 我们将使用猫脸检测和人脸检测模型。

链接如下:

猫脸:

https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalcatface_extended.xml

人脸:

https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml

你可以选择从Github下载XML文件。或者可以从上面的链接复制代码并粘贴到文本编辑器中并保存它们。我把它们命名为“ catface_detector.xml”和“ humanface_detector.xml”。

将文件保存到文件夹后,让我们通过下列代码将上述数据加载到程序中:

# Load the cascades
catface_cascade = cv2.CascadeClassifier('catface_detector.xml')
humanface_cascade = cv2.CascadeClassifier('humanface_detector.xml')

图像数据集

在这一步中,我们需要选择代码测试所需要的图像。确保至少有两张图片来检测程序的准确性。这些图像可以同时有人和猫,或者只是其中一个。

下面是我将要进行测试的两张图片:

选择图像后,对它们进行重命名。当然要确保图像文件位于当前程序处理的文件夹。然后对图像做一些必要的预处理。

图像预处理

在这一步中我们将对图像进行一些处理,以便模型能够得到更准确的结果。首先调整图像的尺寸,让它们保持相同的大小。然后将它们转化为灰度图像,因为我们的模型对于灰度图像的检测速度更快,同时色彩对检测结果的影响微乎其微。

下面我们将用到文章开头安装的库对图像进行上述处理。

调整大小

newsize = (600, 600)
#First image retouches
imgr1 = Image.open("test1.jpg")
imgr1 = imgr.resize(newsize)
imgr1.save("resized1.jpg")
#Second image retouches
imgr2 = Image.open("test2.jpg")
imgr2 = imgr.resize(newsize)
imgr2.save("resized2.jpg")

灰度化

imgr1 = imgr1.convert('L')
imgr1.save('ready1.jpg')
imgr2 = imgr2.convert('L')
imgr2.save("ready2.jpg")

导入预处理后的图像

最后,将处理好的图像导入到我们的程序中,这样我们就可以运行猫脸和人脸检测模型了。我们使用的是Opencv库来导入图像。

# Read the input image
img1 = cv2.imread('ready1.jpg')img2 = cv2.imread('ready2.jpg')

面部识别

检测

现在该检测面部了。我们将运行两行代码。首先检测图像中的人脸。第二行是检测图像中的猫脸。如上所述,我们使用的是opencv内置的分类器。

human_faces = humanface_cascade.detectMultiScale(img1,
scaleFactor=1.3, minNeighbors=5, minSize=(75, 75))
cat_faces = catface_cascade.detectMultiScale(img2, scaleFactor=1.3,
minNeighbors=5, minSize=(75, 75))

绘制矩形

在这一步中,我们将围绕检测到的面部绘制矩形。当然这些矩形可以有不同的颜色,它的宽度也是可以调整的。

for (i, (x, y, w, h)) in enumerate(human_faces):
cv2.rectangle(img1, (x, y), (x+w, y+h), (220, 90, 230), 3)      cv2.putText(img1, "Human Face - #{}".format(i + 1), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (220, 90, 230), 2) for (i, (x, y, w, h)) in enumerate(cat_faces):
cv2.rectangle(img2, (x, y), (x+w, y+h), (0,255, 0), 3) cv2.putText(img2, "Cat Faces - #{}".format(i + 1), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 255), 2)

注1:(220、90、230)和(0,255,0)是绘制的矩形的颜色。 可以更改一些这些值看看颜色如何变化;

注2:(3)是线条的粗细。同样也可以更改参数值并看看矩形的变化。

保存结果

最后,我们将保存带有检测到的面部的图像。这样就可以方便我们进行查看了。小编在这里提醒大家要确保变量名称的正确哦~代码如下所示:

#Saving the images using imwrite method
cv2.imwrite("faces_detected1.png", img1)
cv2.imwrite("faces_detected2.png", img2)

结果

上面就是我们得到的结果。第一张图像检测到的是人脸,第二张图像检测到的是猫脸。在我们的努力下,机器学会了区分人脸和猫脸!

resize之后的喵星人好像胖了哈哈哈哈哈哈·~~

·  END  ·

HAPPY LIFE

Python实现猫脸识别 | 喵主子福利相关推荐

  1. 程序员硬核吸猫:自制猫抓板、猫脸识别、智能猫窝!

    俗话说得好,managing coders is like herding cats,可以说程序员是世界上仅次于猫的迷人生物.他们和猫一样聪明.傲娇,一样让人捉摸不透,甚至可以说除了程序员,不会有人( ...

  2. python检测猫脸

    本人喜欢猫,今天用python完成了对猫的检测 代码: # -*- coding: utf-8 -*- """ Created on Wed Oct 16 09:23:3 ...

  3. 人脸识别已OUT?猫脸识别才更酷!|在线课堂

    荷兰的一位名为 Arkaitz Garro的程序员在今年年初做了个实验:开发了一套用以猫脸识别的系统.目的只是想弄清楚家门外经常出现的是野猫还是别人家的猫! 猫脸识别系统如何做 根据 Garro的说法 ...

  4. 【阿里聚安全·安全周刊】战斗民族黑客入侵德国政府|“猫脸识别”门禁

    -1-   [Java]Java EE已被重命名为Jakarta EE 来源:嘶吼 ------------------------------------------------------ 大概过 ...

  5. 猫脸关键点检测大赛:三种方法,轻松实现猫脸识别!

    导语:挑战猫脸,就差你了! 今天这个比赛,得从一个做程序猿的铲屎官开始说起...... 话说,有一天「铲屎猿」早起之后,发现猫主子竟然没了身影:他找啊找啊,找了好久,可仍然到处都没找到猫主子.这时,客 ...

  6. python实现猫脸人嘴

    前几天看抖音视频,发现有一个叫[嘴哥]的抖音号,把人的嘴巴放在了猫咪脸上,诙谐可爱,于是就在网上搜索了一下如何实现,本来以为要用到复杂的ps技术,没想到手边的python就可以做. 这里感谢原帖,内附 ...

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

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

  8. opencv实现猫脸识别

    输入图片 代码 # -*- coding=utf-8 -*- import cv2 # 加载猫脸检测器 catPath = "haarcascade_frontalcatface.xml&q ...

  9. 宠物识别api接口全开放:狗脸识别、猫脸识别、鼻纹识别、品种识别、相似度比对、图片质量检测

    依据宠物识别的各类应用场景,悦保科技全面升级宠物AI识别的API接口服务,为用户提供更全面.更具针对性的接口选择,满足宠物身份建档.品种信息鉴别.个体身份比对等需求,推动宠物产业链的智能化升级. 宠物 ...

最新文章

  1. Java NIO(一) Java NIO 概述
  2. wav2midi 音乐旋律提取算法 附可执行demo
  3. [剑指offer]面试题7:用两个栈实现队列
  4. 泰坦尼克数据集预测分析_探索性数据分析-泰坦尼克号数据集案例研究(第二部分)
  5. 进一步了解 apt-get 的几个命令
  6. Oracle私网mtu滚动修改实施方案
  7. 红橙Darren视频笔记 IOC注解框架 自己写个注解框架
  8. php中将excel写入mysql数据库的示例
  9. python面试题之如何在Python中创建自己的包
  10. 救命神文!应对ubuntu磁盘空间不足(已解决)
  11. 全球首发!惯性导航导论(剑桥大学)第七部分
  12. java小白会有那些工作_Java小白找工作与学习的第二天
  13. 20200505:力扣151周周赛上
  14. matlab保存超分辨率图
  15. mysql物流管理系统_物流配送中心管理系统(SSM+MYSQL)
  16. JAVA - 根据文件链接将文件下载保存到本地
  17. DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路
  18. 软件工程和软件开发过程
  19. 来了老弟,帅气模态框
  20. 中国房价不可能下降的19个理由

热门文章

  1. 只读存储器,并行存储器
  2. Qt开发的开源项目DBA技术介绍
  3. 一个普通视觉工程师对自己的要求:
  4. 宝塔的安全防范-服务器防火墙配置经验分享
  5. smalltalk资源
  6. Drools5.0.1使用excel实例
  7. 读取Excel数据到集合中
  8. cygwin和mingw的比较
  9. #多源数据融合#:HSI与Lidar
  10. shell脚本之AWK-AWK的变量和AWK运算符