您的位置:首页 > 其它

svm图像训练与测试

2012-12-03 11:02 323 查看
#include <cv.h>

#include <highgui.h>

#include <ml.h>

#include<boost/tokenizer.hpp>

#include<boost/lexical_cast.hpp>

#include <iostream>

#include <fstream>

#include <string>

#include <vector>

using namespace std;

using namespace boost;

#define WIDTH 20

#define HEIGHT 20

int main( )

{

    vector<string> img_path;

    vector<int> img_catg;

    string buf;

    ifstream svm_data( "/home/dz/data/label/train" );

    string spath="/home/dz/data/imageS/";

    char_separator<char> sep(";");

    while( svm_data )

    {

        if( getline( svm_data, buf ) )

        {

          tokenizer<char_separator<char> > tokens(buf,sep);

          tokenizer<char_separator<char> >::iterator it;

          it=tokens.begin();

          img_path.push_back( spath+*it+".jpg" );++it;

            img_catg.push_back( lexical_cast<int>(*it) );//atoi将字符串转换成整型,标志(0,1)

        }

    }

    svm_data.close();//关闭文件

    CvMat *data_mat, *res_mat;

    int nImgNum = img_path.size();            //读入样本数量

    ////样本矩阵,nImgNum:横坐标是样本数量, WIDTH * HEIGHT:样本特征向量,即图像大小

    data_mat = cvCreateMat( nImgNum, WIDTH * HEIGHT, CV_32FC1 );

    cvSetZero( data_mat );

    //类型矩阵,存储每个样本的类型标志

    res_mat = cvCreateMat( nImgNum, 1, CV_32FC1 );

    cvSetZero( res_mat );

    IplImage *srcImg, *sampleImg;

    float b;

    unsigned  n;

    for( string::size_type i = 0; i != img_path.size(); i++ )

    {

       srcImg = cvLoadImage( img_path[i].c_str(), CV_LOAD_IMAGE_GRAYSCALE );

       if( srcImg == NULL )

       {

            cout<<" can not load the image: "<<img_path[i].c_str()<<endl;

            continue;

       }

       cout<<" processing "<<img_path[i].c_str()<<endl;

       sampleImg = cvCreateImage( cvSize( WIDTH, HEIGHT ), IPL_DEPTH_8U, 1 );//样本大小(WIDTH, HEIGHT)

       cvResize( srcImg, sampleImg );//改变图像大小

       cvSmooth( sampleImg, sampleImg );    //降噪

       //生成训练数据

       n = 0;

        for( int ii = 0; ii < sampleImg->height; ii++ )

        {

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: