HOG行人检测,用极大值抑制,python实现
时间: 2024-05-09 15:21:58 浏览: 92
HOG行人检测是一种基于图像处理的目标检测方法,可以用于检测图像中的行人。其中,极大值抑制是一种去除多余检测框的方法,可以进一步提高检测准确率。以下是使用Python实现HOG行人检测和极大值抑制的代码示例:
```
import cv2
# 加载人行检测器
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 加载图片
img = cv2.imread('person.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行行人检测
rects, weights = hog.detectMultiScale(gray, winStride=(8, 8))
# 极大值抑制
for i in range(len(rects)):
for j in range(i+1, len(rects)):
if weights[j] > weights[i] and abs(rects[j][0]-rects[i][0])< rects[i][2] and abs(rects[j][1]-rects[i][1])< rects[i][3]:
rects[i], rects[j] = rects[j], rects[i]
weights[i], weights[j] = weights[j], weights[i]
# 在图片上画出检测框
for i, (x, y, w, h) in enumerate(rects):
if weights[i] > 0.5:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
# 显示结果
cv2.imshow('person detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码中,首先使用cv2.HOGDescriptor()加载HOG描述符,并设置人行检测器为默认的检测器。然后加载图片并进行灰度化处理。接着调用hog.detectMultiScale(gray, winStride=(8, 8))对图片进行行人检测,返回检测到的矩形框的坐标以及每个矩形的权重。最后,通过极大值抑制的方法去除多余的矩形框,并在图片上画出检测结果。
阅读全文