如何使用Python在OpenCV中检测图像中的猫脸?
haar 级联分类器是一种有效的对象检测方法。这是一种基于机器学习的方法。为了训练用于猫脸检测的haar级联分类器,该算法最初需要大量的正面图像(有猫脸的图像)和负面图像(没有猫脸的图像)。分类器是从这些正图像和负图像训练的。然后,它用于检测其他图像中的猫脸。
我们可以使用已经训练好的haar级联来进行微笑检测。对于输入图像中的微笑检测,我们需要两个haar级联,一个用于面部检测,另一个用于微笑检测。我们将使用haarcascade_frontalcatface.xml在图像中进行猫脸检测。
如何下载Haarcascades?
您可以在GitHub网站地址以下找到不同的 -Haarcascades
opencv/data/haarcascades at master · opencv/opencv · GitHub
要下载用于猫脸检测的haar级联,请单击haarcascade_frontalcatface.xml文件。以原始格式打开它,右键单击并保存。
步骤
要检测图像中的猫脸并在它们周围绘制边界框,您可以按照以下步骤操作 -
-
导入所需的库。在以下所有示例中,所需的 Python 库是 OpenCV。确保您已经安装了它。
-
使用 cv2.imread() 读取输入图像。指定完整的图像路径。将输入图像转换为灰度。
-
启动 Haar 级联分类器对象 cat_cascade = cv2。CascadeClassifier() 用于猫脸检测。传递 haar 级联 xml 文件的完整路径。您可以使用 haar 级联文件haarcascade_frontalcatface.xml来检测图像中的猫脸。
-
使用 cat_cascade.detectMultiScale() 检测输入图像中的猫脸。它以 (x,y,w,h) 格式返回检测到的猫脸的坐标。
-
使用 cv2.rectangle() 在原始图像中检测到的猫脸周围绘制边界矩形。
-
在猫脸周围使用绘制的边框显示图像。
让我们看一些示例来检测图像中的猫脸。
例
在此示例中,我们使用 haar 级联检测输入图像中的猫脸。
# import required libraries import cv2 # read the input image img = cv2.imread('cat.jpg') # convert the input image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # read the haarcascade to detect cat faces cat_cascade = cv2.CascadeClassifier('haarcascades\haarcascade_frontalcatface.xml') # Detects cat faces in the input image faces = cat_cascade.detectMultiScale(gray, 1.1, 3) print('Number of detected cat faces:', len(faces)) # if atleast one cat face id detected if len(faces) > 0: print("Cat face detected") for (x,y,w,h) in faces: # To draw a rectangle in a face cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,255),2) cv2.putText(img, 'cat face', (x, y-3), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 1) else: print("No cat face detected") # Display an image in a window cv2.imshow('Cat Image',img) cv2.waitKey(0) cv2.destroyAllWindows()
我们将使用此图像作为该程序的输入文件 -
输出
当你执行程序时,它将产生以下输出 -
Number of detected cat faces: 1 Cat face detected
我们得到以下输出窗口 -
例
在此示例中,我们使用 haar 级联检测输入图像中的猫脸。
# import required libraries import cv2 # read the input image img = cv2.imread('two-cats.jpg') # convert the input image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # read the haarcascade to detect cat faces cat_cascade = cv2.CascadeClassifier('haarcascades\haarcascade_frontalcatface.xml') # Detects cat faces in the input image faces = cat_cascade.detectMultiScale(gray, 1.1, 3) print('Number of detected cat faces:', len(faces)) # if atleast one cat face id detected if len(faces) > 0: for (x,y,w,h) in faces: print("Cat face detected") # To draw a rectangle in a face cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,255),2) cv2.putText(img, 'cat face', (x, y-3), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 1) else: print("No cat face detected") # Display an image in a window cv2.imshow('Cat Image',img) cv2.waitKey(0) cv2.destroyAllWindows()
我们将使用此图像作为该程序的输入文件 -
在执行时,它将产生以下输出 -
Number of detected cat faces: 2 Cat face detected Cat face detected
我们得到以下输出窗口 -
相关文章
- Python中文分词组件 jieba
- mac 上python编译报错No module named MySQLdb
- 【Python】python 日期操作
- Python变量和字符串详解
- python实现飞书创建机器人发送消息
- 【原创】Python 源文件编码解读
- python-opencv 图像二值化,自适应阈值处理
- python cx_oracle单个表中批量插入数据
- python:ERROR: No matching distribution found for Pillow==9.1.0的处理(Python 3.6.8)
- Opencv学习笔记 - 使用OpenCV,scikit-image和Python检测低对比度图像
- 【OpenCV-Python】教程:汇总
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(计算器简单功能)
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(text.insert/link各种事件)
- 成功解决FileNotFoundError: [Errno 2] No such file or directory: 'F:Program FilesPythonPython36li
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- python之使用zip压缩文件夹(支持多级目录)亲测好用
- C++版本的OpenCV 5.x编译生成opencv-python==5.x(GPU版本)接口并进行调用
- OpenCV-Python Feature2D 特征点检测 (SIFT,SURF)
- 为什么你总是学不会Python,入门Python的4大陷阱
- Python-OpenCV图像处理-09-图像直方图
- opencv-python视频处理之录制视频
- Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)