用opencv实现HOG+SVM行人检测

用opencv实现HOG+SVM行人检测

HOG Descriptors 是Navneet Dalal在2005年提出的一种特征,是行人检测方面的经典特征。在opencv中当然也提供了这种方法的实现。

我们可以先跑一跑opencv自带的实现方法,使用opencv中已经训练好的SVM分类器,代码如下。
#include 
#include 
int main(int argc, char** argv)
{
    cv::Mat image = cv::imread("test.jpg"); 
    if (image.empty())
    {
        std::cout << "图片读取错误!" << std::endl;
    }
    //【1】定义hog描述符
    cv::HOGDescriptor hog;
    //【2】设置SVM分类器
    hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector()); 
    //【3】在测试图像上检测行人区域
    std::vector regions;
    hog.detectMultiScale(image, regions, 0, cv::Size(8, 8), cv::Size(32, 32), 1.05, 1);

    for (size_t i = 0; i < regions.size(); i++)
    {
        cv::rectangle(image, regions[i], cv::Scalar(0, 0, 255), 2);
    }
    cv::imshow("行人检测", image);
    cv::waitKey(0);
    return 0;
}

用opencv实现HOG+SVM行人检测_第1张图片

用opencv实现HOG+SVM行人检测_第2张图片

可见效果十分明显。

你可能感兴趣的:(计算机视觉)