小编Sta*_*rog的帖子

OpenCV:如何将 HOGDescriptor::detectMultiScale() 与自定义 SVM 一起使用?

我用我自己的正样本和负样本训练了一个关于 HOG 特征的 CvSVM:

CvSVMParams params;
params.svm_type    = CvSVM::C_SVC;
params.kernel_type = CvSVM::RBF;

CvSVM svm;
svm.train_auto(descriptors, labels, cv::Mat(), cv::Mat(), params,
               SVM_CROSS_VALIDATION_K);
Run Code Online (Sandbox Code Playgroud)

我可以很好地对图像进行分类:

cv::HOGDescriptor hog;
hog.winSize = cv::Size(HOG_PARAMS.width(), HOG_PARAMS.height());

//compute the HOG features
hog.compute(image, ders,
            cv::Size(HOG_PARAMS.stride(),HOG_PARAMS.stride()),
            cv::Size(0,0), locs);

//convert the feature to a Mat
cv::Mat desc_mat;
desc_mat.create(ders.size(), 1, CV_32FC1);
for(unsigned int i = 0; i < ders.size(); i++)
  desc_mat.at<float>(i, 0) = ders[i];

float response = svm.predict(desc_mat);
Run Code Online (Sandbox Code Playgroud)

现在我想使用 HOGDescriptor::detectMultiScale() 来检测图像中感兴趣的对象。要将 CvSVM 转换为 HOGDescriptor 所需的原始形式,我使用/sf/answers/1198299301/建议的方法:

detector_svm.h:

#ifndef DETECTOR_SVM_H
#define DETECTOR_SVM_H

#include <opencv2/core/core.hpp> …
Run Code Online (Sandbox Code Playgroud)

opencv svm

5
推荐指数
1
解决办法
7269
查看次数

标签 统计

opencv ×1

svm ×1