使用HOG(Histogram of Oriented Gradients)描述符和SVM(支持向量机)进行行人检测是一种常见的计算机视觉任务。下面是一个使用Python和OpenCV库实现行人检测的示例代码,并解释其工作原理。
首先,确保你已经安装了OpenCV和scikit-learn库。如果没有安装,可以使用以下命令进行安装:
pip install opencv-python scikit-learn
import cv2
import numpy as np
from sklearn import svm
from sklearn.metrics import accuracy_score
# 加载预训练的HOG描述符和SVM分类器
hog = cv2.HOGDescriptor()
svm_classifier = svm.SVC(kernel='linear')
# 加载训练好的SVM模型(假设你已经训练好并保存了模型)
svm_classifier.load('svm_model.pkl')
# 读取测试图像
image = cv2.imread('test_image.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 设置HOG检测器的参数
winStride = (8, 8)
padding = (8, 8)
scale = 1.05
finalThreshold = 2.0
# 检测行人
(rects, weights) = hog.detectMultiScale(gray_image, winStride=winStride, padding=padding, scale=scale, finalThreshold=finalThreshold)
# 绘制检测结果
for (x, y, w, h) in rects:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示结果图像
cv2.imshow('Pedestrian Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
svm_model.pkl
文件。hog.detectMultiScale
函数会在图像中检测行人,并返回检测到的矩形框和对应的权重。如果你还没有训练好的SVM模型,可以按照以下步骤进行训练:
import joblib
joblib.dump(svm_classifier, 'svm_model.pkl')
领取专属 10元无门槛券
手把手带您无忧上云