libsvm分类

利用libsvm识别数字,总共100副图片,其中0-9各10副,图像大小为28*20

1、提取训练和测试数据

clear all;
clc;
global train_picture;                  %全局变量
train_picture = ones(100,560);         %生成100行,561列矩阵,最后一个表示数字
for i = 0:99
    train_index = i + 1;
    train_direc = strcat('.\1\in\',int2str(i),'.bmp');     %训练图片路径
    picture = imread(train_direc,'bmp');            %以BMP格式读入
    picture_gray = rgb2gray(picture);               %变成灰度图像
    picture_shape = reshape(picture_gray,1,560);    %变成1行560列
    picture_uint = im2uint8(picture_shape);         %变成int类型
    picture_double = double(picture_uint);
    picture_normalization = picture_double/255;
    train_picture(train_index,:) = picture_normalization;     %放到数组里面
end;
save train_picture.mat train_picture;                  %保存

2、训练

 clear all;                         %清空显示
 fprintf('载入输入样本。。。');
 load train_picture.mat;            %加载数据
 y = ones(100,1);                  %二值数据存储
 x = train_picture(:,:);            %到处训练样本
 
 %构造输出矩阵
 for i = 0:99
     m = i ;
     h = floor(m/10);
     y(m + 1,:) = h;
 end
model = svmtrain(y(:,1),x,'-s 0 -t 2 -c 1 -g 0.1');
save train.mat

3、测试

%--------------------------------------------------------------------------
clear all;                   %清空显示
load train.mat;              %加载数据
test = ones(1,560);
%--------------------------------------------------------------------------
%读入要识别的数字
%--------------------------------------------------------------------------
fprintf('正在识别数字。。。。\n');
%test_direc = strcat('.\1\in\67.bmp');     %训练图片路径
test_direc = strcat('.\44_1.bmp');     %训练图片路径
picture = imread(test_direc,'bmp');                  %以BMP格式读入
imshow(picture);
picture_gray = rgb2gray(picture);                    %变成灰度图像
picture_shape = reshape(picture_gray,1,560);         %变成1行560列
picture_uint = im2uint8(picture_shape);              %变成int类型
picture_double = double(picture_uint);
picture_normalization = picture_double/255;
test(1,:) = picture_normalization;                            %放到测试数组里面
y=1;
%进行数字识别--------------------------------------------------------------
 %output the separation resultof test sample
[plabel,accuracy,decision_values] = svmpredict(y,test,model);

fprintf('识别完毕,数字识别为:%d \n',plabel);  

源代码下载:http://download.csdn.net/detail/u013747358/7295489

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值