如何在OpenCV Python中检测图像中的人物?

如何在OpenCV Python中检测图像中的人物?

要在图像中检测人物并绘制围绕它们的边界框,可以使用以下步骤−

  • 导入所需的库。在以下所有示例中,所需的Python库是 OpenCV 。确保您已经安装了它。

  • 使用 cv2.imread() 以灰度方式读取输入图像。指定完整的图像路径。

  • 初始化 HOG 描述符对象 hog = cv2.HOGDescriptor() ,并将SVM检测器设置为默认人物检测器 hog.setSVMDetector()

  • 使用 hog.detectMultiScale() 检测输入图像中的人类。它以 (x,y,w,h) 格式返回检测到的人物的坐标。

  • 循环遍历图像中检测到的所有人物,并使用 cv2.rectangle() 在原始图像中绘制围绕检测到的人物的边框。

  • 显示带有围绕人类的绘制边框的图像。

让我们来看看下面的示例,以获得更清晰的理解。

我们将使用此图像作为 输入文件 ,用于以下示例−

如何在OpenCV Python中检测图像中的人物?

例子

在此示例中,使用Hog描述符检测输入图像中的人类。

# 导入所需的库
import cv2

# 读取图像
image = cv2.imread('people1.jpg')

# 初始化HOG描述符
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

# 检测输入图像中的人类
(humans, _) = hog.detectMultiScale(image, winStride=(10, 10),
padding=(32, 32), scale=1.1)

# 获取检测到的人数
print('Human Detected : ', len(humans))

# 循环遍历所有已检测到的人类
for (x, y, w, h) in humans:
   pad_w, pad_h = int(0.15 * w), int(0.01 * h)
   cv2.rectangle(image, (x + pad_w, y + pad_h), (x + w - pad_w, y + h - pad_h), (0, 255, 0), 2)

# 显示输出图像
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

当您运行以上Python程序时,它将产生以下 输出

检测到的人数:4

并且我们得到了以下输出窗口 −

如何在OpenCV Python中检测图像中的人物?

检测到的人员周围的边框用绿色绘制。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV