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


要检测图像中的人类并在其周围绘制边界框,您可以使用以下步骤 -

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

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

  • 初始化一个HOG描述符对象hog = cv2.HOGDescriptor()并将SVM检测器设置为hog.setSVMDetector()作为默认的人员检测器。

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

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

  • 显示带有在人类周围绘制的边界矩形的图像。

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

我们将使用此图像作为以下示例的输入文件 -


示例

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

# import required libraries import cv2 # Reading the Image image = cv2.imread('people1.jpg') # initialize the HOG descriptor hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # detect humans in input image (humans, _) = hog.detectMultiScale(image, winStride=(10, 10), padding=(32, 32), scale=1.1) # getting no. of human detected print('Human Detected : ', len(humans)) # loop over all detected 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) # display the output image cv2.imshow("Image", image) cv2.waitKey(0) cv2.destroyAllWindows()

输出

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

Human Detected: 4

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


检测到的人类周围的边界框以绿色绘制。

更新于: 2022年12月5日

13K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告