使用HOG(Histogram of Oriented Gradients)描述符和SVM(Support Vector Machine)进行行人检测是一种常见的计算机视觉任务。下面是一个使用Python和OpenCV库实现行人检测的示例代码:
import cv2
# 加载HOG描述符和预训练的SVM模型
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# 读取图像
image = cv2.imread(' pedestrians.jpg')
# 检测行人
(rects, weights) = hog.detectMultiScale(image, winStride=(4, 4), padding=(8, 8), scale=1.05)
# 绘制检测结果
for (x, y, w, h) in rects:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示结果图像
cv2.imshow('Pedestrians', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
HOGDescriptor
对象,并使用OpenCV提供的默认行人检测SVM模型。cv2.imread
函数读取输入图像。winStride
:滑动窗口的步长。padding
:在检测窗口周围添加的填充大小。scale
:图像金字塔的缩放比例。detectMultiScale
函数返回检测到的行人矩形框和相应的权重。
cv2.rectangle
函数在图像上绘制检测到的行人矩形框。cv2.imshow
显示结果图像,并等待用户按键关闭窗口。通过以上步骤和代码,你可以使用HOG描述符和SVM进行行人检测。根据具体需求,可以进一步优化和调整检测参数。使用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元无门槛券
手把手带您无忧上云