个人笔记:OpenCv(二)物体检测——Haar级联分类器的调用

目录

前言

文件结构

示例代码

效果展示

重点讲解

Haar级联分类器(XML)文件的获取


前言

        使用的编译环境和工具:Anaconda、Jupyter Notebook

        需要安装的库:OpenCV(打开 Anaconda Prompt 终端,输入命令:conda install opencv)

文件结构

        本文只针对Haar级联分类器的调用做示例,故文件结构较为简单。

cat_face(总文件夹)
cat.jpg(测试图片)

haarcascade_frontalcatface.xml

(Haar级联分类器)

cat_face.ipynb

(代码文件)

示例代码

import cv2

# 加载Haar级联分类器
cat_cascade = cv2.CascadeClassifier('haarcascade_frontalcatface.xml')

# 加载图像
img = cv2.imread('cat.jpg')

# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 检测猫脸
cats = cat_cascade.detectMultiScale(gray, 1.3, 5)

# 在图像中绘制矩形框
for (x, y, w, h) in cats:
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

# 显示图像
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果展示

个人笔记:OpenCv(二)物体检测——Haar级联分类器的调用_第1张图片

重点讲解

        首先需要讲的是两个地址的问题,我个人习惯于两种地址格式:

        ①相对路径

        代码中所用就是相对路径的形式,我将.xml文件、jpg图片和代码文件放在同一目录下,即可直接按照文件名进行调用。

cat_cascade = cv2.CascadeClassifier('haarcascade_frontalcatface.xml')

img = cv2.imread('cat.jpg')

        ②绝对路径

        这里给出一种绝对路径的获取方式。直接右键点击你的目标文件,选择“复制文件地址”(Ctrl+Shift+C),然后在路径前加上r即可

img = cv2.imread(r'C:\Users\since\Desktop\Jupyter\Object_detection\cat_face\cat.jpg')

        不管哪一种方式都是可以运行的。在这里我为了方便项目文件的管理,将所有文件都放在了一起,所以采用第一种方式。

        然后需要讲的一点就是当程序运行后会出现一个新的窗口显示图片,这时如果你直接关闭窗口,程序是不会停止的,你需要在图片窗口中按下任意按键,程序就会自己关闭,这是以下代码的功能:

cv2.waitKey(0)
cv2.destroyAllWindows()

        直接关闭窗口会导致你的Jupyter Notebook内核一直被占用,无法保存或修改。但如果你不小心确实这么做了,也是有办法的:

        一种办法是关闭代码文件回到上级目录,勾选该程序代码选择ShutDown;

        另一种办法是在代码文件的上方找到kernel,然后点击Restart;

Haar级联分类器(XML)文件的获取

        那么到这里肯定就会问了(包括我自己),这个haarcascade_frontalcatface.xml是怎么来的呢?

        实际上,haarcascade_frontalcatface.xml文件是OpenCV中预先训练好的Haar级联分类器之一,用于检测猫脸。Haar级联分类器是一种机器学习算法,用于检测图像中的目标对象。该算法是通过训练一系列弱分类器,并将它们组合成强分类器来实现的。

        训练Haar级联分类器需要大量的正负样本,并使用OpenCV中的opencv_createsamples和opencv_traincascade工具进行训练。为了方便用户使用,OpenCV提供了一些预先训练好的Haar级联分类器,包括haarcascade_frontalcatface.xml.

        该文件是由OpenCV贡献者使用大量猫的脸部样本进行训练生成的。如果需要使用其他类型的Haar级联分类器,例如检测眼睛或人体,可以使用OpenCV的工具对自己的数据进行训练,以生成新的分类器XML文件。

        对于新手来说,使用预先训练好的Haar级联分类器肯定是最方便的。可以按照以下步骤下载XML文件:

  1. 访问OpenCV官方GitHub仓库(需要VPN):opencv/data/haarcascades at master · opencv/opencv · GitHubOpen Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.https://github.com/opencv/opencv/tree/master/data/haarcascades
  2. 在该页面上,您可以找到一些XML文件,可以选择您需要的分类器并下载它。
  3. 点击下载链接,将XML文件保存到您的本地计算机上。

        这些XML文件是OpenCV开源社区提供的,可以在OpenCV的许可证下自由使用和分发。

你可能感兴趣的:(#,OpenCV相关,opencv,python,计算机视觉)