我使用matlab生成了SVM模型。现在我想在OpenCV中加载SVM模型。这是我的matlab代码,用于获取SVM模型。
pos_mat = matfile('positve200.mat'); % positve samples
neg_mat = matfile('Negative200.mat'); % negative samples
postest_mat = matfile('test.mat'); % positive test samples
negtest_mat = matfile('test1.mat'); % negative test samples
negtest_mat1= matfile('Test2.mat'); % negative test samples
posRow = pos_mat.bigmat; % get positve samples
negRow = neg_mat.bigmatneg; % get negative samples
negRow(34,:) = negRow(1,:);
cartestRow = postest_mat.out;
negtestRow = negtest_mat.negtestsamples;
negtestRow1 = negtest_mat1.bigmatneg;
group = ones(68,1);
group(35:68) = -1;
t = 35;
for i =1:1:34
posRow(t,:) = (negRow(i,:));
t = t+1;
end
xdata = posRow;
SVMModel = fitcsvm(xdata,group);
有人可以帮助我在OpenCV中加载SVM模型,然后使用SVM模型生成的值,类似于hog.cpp中默认人物检测器的值。请参阅以下两个功能。
我希望获得与我自己的SVM分类器类似的值。您可以找到垫文件here
更新 我使用了Beta值,然后将其保存到yaml文件中。我在OpenCV中使用这个yaml文件来检测我训练分类器的对象。这是代码
sv = SVMModel.IsSupportVector;
alpha = SVMModel.Alpha;
bias = SVMModel.Bias;
beta = (SVMModel.Beta)';
fid = fopen(sprintf('%s.yml','vecSupport'),'a');
fprintf(fid,'%s','%YAML:1.0');
fprintf(fid,'\n');
fprintf(fid,'%s','vector: ');
fprintf(fid,'%s','[ ');
for i = 1:1:2772
fprintf(fid,'%d',beta(i));
if (i<2772)
fprintf(fid,'%s',', ');
end
end
fprintf(fid,'%s',' ]');
fclose(fid);