行人识别这一块主要的研究是基于HoG特征+SVM分类器判断图像中是否存在行人。
我们先给出行人识别的过程:
1. 数据训练(OpenCV 中有自带的已经训练好了的,设置参数为Default就是使用的默认的)。当然你可以自己根据手里的数据进行训练,如果你的数据有代表性,这样其实往往可能的效果比默认的会好,因为你的训练数据是自己的项目实际需求得到的。你的测试数据也是该环境下的。出现误差的概率会下降。
2. 正负样本训练好之后,我们对新出现的可能含有行人的图像进行多尺度迭代扫描(多尺度检测)。
下面是使用了默认SVM的。
// 1. 定义HOG对象
cv::HOGDescriptor hog; // 采用默认参数
// 2. 设置SVM分类器
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector()); // 采用已经训练好的行人检测分类器
// 3. 在测试图像上检测行人区域
std::vector<cv::Rect> regions;
hog.detectMultiScale(image, regions, 0<