1.制作样本
2.对每一张图片调用
hog.compute(img, descriptors,Size(8,8), Size(0,0));
可以生成hog descriptors,把它保存到文件中
for(int j=0;j<3780;j++)
fprintf(f,"%f,",descriptors[j]);
3.利用SVM进行训练和分类,可得到权重系数,即getDefaultPeopleDetector()函数中调用的
检测 算子 detector[]
直接使用libsvm,需要按它的格式构造数据,下面简述在matlab下使用libsvm
下载libsvm-mat-2.9-1 (libsvm3.12版本)
方法1:
切换到libsvm-mat-2.9-1所在的目录下,打开MATLAB键入:
mex -setup
方法2:matlab菜单 File-->set path 将libsvm-mat-2.9-1所在路径添加进来。
----------------------
下面以libsvm-mat-2.9-1自带的heart_scale为例进行介绍
-----------kernel_type为线性----------------------------------
load heart_scale.mat
train_data = heart_scale_inst(1:150,:);
train_label = heart_scale_label(1:150,:);
test_data = heart_scale_inst(151:270,:);
test_label = heart_scale_label(151:270,:);
model_linear = svmtrain(train_label, train_data, '-t 0')
[predict_label_L, accuracy_L, dec_values_L] = svmpredict(test_label, test_data,model_linear);
----------训练后得到模型-------
model_linear =
Parameters: [5x1 double]
nr_class: 2
totalSV: 58