clc;
clear all;
close all;
%% 使用SVM做识别,测试准确率
% Files = dir(fullfile('.\Car','*.jpg'));
file_path = 'E:/matlab_0808/0816/people1/';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像
CarNum = length(img_path_list);%获取图像总数量
% Files = dir(fullfile('.\Car2','*.png'));
% CarNum = length(Files);
CarFea=[];
for i = 1:CarNum
image_name = img_path_list(i).name;% 图像名
Img = imread(strcat(file_path,image_name));
imggray = rgb2gray(Img);
[m,n] = size(imggray);
H2=lbp(imggray);
H2fea = (H2-min(H2))/(max(H2)-min(H2));
CarFea=[CarFea;H2fea];
end
%Files = dir(fullfile('.\Tank3','*.jpg'));
file_path = 'E:/matlab_0808/0816/other/';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像
TankNum = length(img_path_list);%获取图像总数量
TankFea=[];
for i = 1:TankNum
image_name = img_path_list(i).name;% 图像名
Img = imread(strcat(file_path,image_name));
%Img = imread([Files(i).folder '\' Files(i).name]);
%自己写图像处理函数 ImgProc(Img);
imggray = rgb2gray(Img);
[m,n] = size(imggray);
% imshow(I)
H2=lbp(imggray);
H2fea = (H2-min(H2))/(max(H2)-min(H2));
TankFea=[TankFea;H2fea];
end
dataFea = [CarFea;TankFea];
Group = [0*ones(CarNum,1); 1*ones(TankNum,1)];
%classifer = fitcecoc(dataFea,Group);
% SVM train
svmStr = svmtrain(dataFea,Group,'kernel_function','linear','showplot',true);
fid = fopen('SVM_people_reg.txt', 'at+'); %-t模式按照文本而非二进制模式读写
fprintf(fid,'%f\n',length(svmStr.Alpha));% 写入VecNum
fprintf(fid,'\n\n\n');
fprintf(fid,'%f\n',svmStr.Bias());% 写入Bias
fprintf(fid,'\n\n\n');
% 写入SupportVectors
for i=1:length(svmStr.Alpha)
fprintf(fid,'{');
fprintf(fid,'%f,',svmStr.SupportVectors(i,1:255));
fprintf(fid,'%f',svmStr.SupportVectors(i,256:256));
fprintf(fid,'},\n');
end
fprintf(fid,'\n\n\n');
% 写入Alpha
for i=1:length(svmStr.Alpha)
fprintf(fid,'{');
fprintf(fid,'%f',svmStr.Alpha(1));
fprintf(fid,'},\n');
end
fprintf(fid,'\n\n\n');
% 写入shift
fprintf(fid,'{');
fprintf(fid,'%f,',svmStr.ScaleData.shift(1:255));
fprintf(fid,'%f',svmStr.ScaleData.shift(256:256));
fprintf(fid,'}\n');
fprintf(fid,'\n\n\n');
% 写入scaleFactor
fprintf(fid,'{');
fprintf(fid,'%f,',svmStr.ScaleData.scaleFactor(1:255));
fprintf(fid,'%f',svmStr.ScaleData.scaleFactor(256:256));
fprintf(fid,'}\n');
fclose(fid);