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++ )
{
#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++ )
{
相关文章推荐
- svm图像训练与测试
- vc 读取图像、计算对比度、svm训练、测试
- Ros_OpenCV_socket_客户端程序_与语音结合训练与测试图像
- 测试 svm 训练的xml 分类器 ~
- caffe学习笔记3:使用caffe对自己的图像数据进行训练和测试
- 深度学习文章5:使用caffe对自己的图像数据进行训练并测试
- [置顶] Caffe编译和图像训练测试
- 【用Python学习Caffe】3. 图像训练测试数据集LMDB的生成
- 测试 svm 训练的xml 分类器 ~
- HOG+SVM样本训练测试例子
- tensorflow训练自己的数据集实现CNN图像分类2(保存模型&测试单张图片)
- 使用matlab对训练样本图像降维,并对测试图像使用变换矩阵降维并重构
- CNN的训练图像与测试图像不一致的多尺度问题
- Matlab的svmtrain从数据集中抽样训练样本和测试样本的方法
- CNN的训练图像与测试图像不一致的多尺度问题
- 使用matlab对训练样本图像降维,并对测试图像使用变换矩阵降维并重构
- (OpenCV3.2.0)基于HOG特征的SVM训练与测试实例
- CNN的训练图像与测试图像不一致的多尺度问题
- caffe for Windows图像分类训练、测试实例
- 训练和测试自己的图像集