python猫咪藏在哪个房间_Python实现猫脸识别 | 喵主子福利

2023-10-12 05:10

本文主要是介绍python猫咪藏在哪个房间_Python实现猫脸识别 | 喵主子福利,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

38171d18-f78f-4a4a-bb51-78a9983d760f.png

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

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

Library

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

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

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

pip install opencv-python pillow

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

import cv2from 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 cascadescatface_cascade = cv2.CascadeClassifier('catface_detector.xml')humanface_cascade = cv2.CascadeClassifier('humanface_detector.xml')

图像数据集

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

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

eaf3855c-cea8-409a-9417-8f415c542b52.jpg

13804a04-6369-44ae-bb53-0e11a24b374e.jpg

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

图像预处理

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

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

调整大小

newsize = (600, 600)#First image retouchesimgr1 = Image.open("test1.jpg")imgr1 = imgr.resize(newsize)imgr1.save("resized1.jpg")#Second image retouchesimgr2 = 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 imageimg1 = 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 methodcv2.imwrite("faces_detected1.png", img1)cv2.imwrite("faces_detected2.png", img2)

结果

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

19768ea9-33f0-4c40-a606-4fc04cefdc4f.png

3c712371-d324-4299-b97f-749d861c86c5.png

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

· END ·

HAPPY LIFE

6c116137-4929-40c7-b5d4-e31d119d5b68.png

这篇关于python猫咪藏在哪个房间_Python实现猫脸识别 | 喵主子福利的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/193481

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount