Python OpenCV目标检测

2025 年 8 月 28 日 | 阅读 6 分钟

OpenCV 是一个庞大且开源的图像处理、机器学习和计算机视觉库。它在实时操作中也扮演着重要角色。借助 OpenCV 库,我们可以轻松处理图像和视频,从而识别文件中的物体、人脸甚至人类笔迹。在本教程中,我们将只关注使用 OpenCV 从图像中进行对象检测。我们将学习如何使用 Python 程序利用 OpenCV 来检测给定图像中的对象。

目标检测

基本上,对象检测是一项现代计算机技术,它与图像处理、深度学习和计算机视觉相关,用于检测图像文件中存在的对象。对象检测技术中使用的所有技术(如我们之前提到的)都涉及在图像或视频中检测对象的实例。

使用 OpenCV 进行对象检测

我们在上一节中学习了对象检测,在本节中,我们将学习如何使用 OpenCV 库在图像或视频中进行对象检测。我们将首先在 Python 程序中导入 OpenCV 库,然后使用该库的函数对给定的图像文件执行对象检测。但是,在使用和导入库函数之前,让我们先安装使用对象检测技术的先决条件。

在本教程中,我们将使用 Haar 级联技术进行对象检测。让我们先简要了解一下 Haar 级联技术。

Haar 级联

基本上,Haar 级联技术是一种基于机器学习的方法,我们使用大量正例和负例图像来训练分类器进行图像分类。Haar 级联分类器被认为是使用 OpenCV 库进行对象检测的有效方法。现在,让我们理解一下我们之前讨论过的正例和负例图像的概念。

  • 正例图像:这些是包含我们要从分类器中识别出的对象的图像。
  • 负例图像:这些是不包含我们要由分类器检测到的任何对象的图像,可以是任何其他内容的图像。

使用 Python OpenCV 进行对象检测的先决条件

在我们的系统中安装一些重要的库是进行对象检测任务的重要先决条件。我们需要在系统中安装以下库作为执行对象检测的先决条件。

1. 安装 OpenCV 库

首先,使用 OpenCV 库执行对象检测的先决条件是,我们的设备中必须存在 OpenCV 库,以便我们可以将其导入 Python 程序并使用其对象检测函数。如果系统中不存在此库,我们可以在命令提示符终端中使用以下命令进行安装。


Python OpenCV object detection

在终端中输入此命令后按 Enter 键,命令提示符中的 pip 安装程序将开始将 OpenCV 库安装到我们的系统中。

Python OpenCV object detection

正如我们所见,OpenCV 库已成功安装在我们的系统中,现在我们可以将其导入 Python 程序以使用其函数。

2. 安装 matplotlib 库

Matplotlib 在 Python 程序中打开、关闭、读取图像等方面非常有用,因此安装此库进行对象检测成为一项重要的先决条件。如果系统中不存在 matplotlib 库,我们必须在命令提示符终端中使用以下命令进行安装。


Python OpenCV object detection

在终端中输入此命令后按 Enter 键,命令提示符中的 pip 安装程序将开始将其安装到我们的系统中。

Python OpenCV object detection

正如我们所见,matplotlib 库已成功安装在我们的系统中,现在我们可以将其导入 Python 程序以使用其用于打开、读取图像等的函数。

我们已安装所有必需的库以执行对象检测,现在我们可以继续进行此任务的实现部分。

在 Python 中实现对象检测

在本部分中,我们将编写 Python 程序来执行对象检测并理解其实现。我们将使用下面的图像在我们的 Python 程序中对其进行对象检测。

Python OpenCV object detection

打开图像

我们将首先打开上面的图像,并创建图片的环境以在输出中显示它。让我们先看一个示例程序来理解实现,然后我们将看解释部分。

示例 1:在 Python 程序中使用 OpenCV 和 matplotlib 库打开图像

输出

Python OpenCV object detection

说明

首先,我们将 OpenCV (导入为 cv2) 和 matplotlib (导入为 plt) 库导入程序,以便在代码中使用它们的函数。之后,我们使用 cv2 的 imread() 函数打开了图像文件。

然后,我们使用 cv2 函数定义了程序中打开的图像的属性。然后,我们使用 plt 的 subplot() 函数和其中的参数对图像进行子图绘制。最后,我们使用 plt 模块的 imshow() 和 show() 函数在输出中显示图像。

正如我们在输出中看到的,图像作为程序的结果显示,并且其边框已被子图绘制。

图像中的识别或对象检测

现在,我们将使用程序中的 detectMultiScale() 来检测图像中存在的对象。以下是在代码中使用 detectMultiScale() 函数的语法。

我们将在此函数中使用条件语句,以检查是否检测到图像中的任何对象,并突出显示检测到的部分。让我们通过一个示例程序来理解图像中对象检测的实现。

示例 2:在以下 Python 程序中使用 detectMultiScale() 在图像中进行对象检测

输出

Python OpenCV object detection

说明

在程序中打开图像后,我们将级联分类器 XML 文件导入程序。然后,我们使用导入的级联文件的 detectMultiScale() 函数来检测图像中是否存在对象。

我们在程序中使用 if 条件来检查是否检测到对象,如果检测到对象,我们使用 for 循环和 cv2 函数突出显示检测到的对象部分。在突出显示图像中的检测到的对象部分后,我们使用 plt 的 show()imshow() 函数显示处理后的图像。

正如我们在输出中看到的,当我们运行程序时,将向我们显示带有突出显示的对象检测部分的图像。