如何在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
下面是我们得到的输出窗口 –
检测到的人类周围的边界框以绿色绘制。