• 大小: 5.78MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-01
  • 语言: 其他
  • 标签: SVM  Opencv  

资源简介

自己写的手写数字识别源码,识别效果还可以,基于Opencv3.1+VS2013,带有数字0-5的数据集,还有自己训练的特征文件,包含训练程序以及测试程序。

资源截图

代码片段和文件信息

#include 
#include 
#include 

using namespace cv;
using namespace cv::ml;
using namespace std;

Mat temp_feature;
Mat src;
Mat sample_features;//特征向量
Mat sample_labels;//训练样本的标签

void init();//初始化一些参数
void feature_extract(string path);//特征提取
void train();//训练模型
void test(string test_image_path);//测试

int main()
{
string test_path = “C:/Users/Administrator/Desktop/3.bmp“;
init();
//train();
test(test_path);
waitKey(0);
return 0;
}

void train()
{
//定义图片路径
string image_path;

cout << “start training...“ << endl;
//读取训练样本
ifstream train_0_file(“data/train_data/0.lst“);
ifstream train_1_file(“data/train_data/1.lst“);
ifstream train_2_file(“data/train_data/2.lst“);
ifstream train_3_file(“data/train_data/3.lst“);
ifstream train_4_file(“data/train_data/4.lst“);
ifstream train_5_file(“data/train_data/5.lst“);

//获取训练数据的0样本
#if 1
for (int num = 0; num < 10 && getline(train_0_file image_path); num++)
{
feature_extract(image_path);
if (num == 0)
{
cout << “init feature size...“ << endl;
sample_features = Mat::zeros(60 16 CV_32FC1);
sample_labels = Mat::zeros(60 1 CV_32SC1);
}
for (int i = 0; i < 16; i++){
sample_features.at(num i) = temp_feature.at(0 i);
}
sample_labels.at(num 0) = 0;
}
#endif

//获取训练数据的1样本
#if 1
for (int num = 0; num < 10 && getline(train_1_file image_path); num++)
{
feature_extract(image_path);
for (int i = 0; i < 16; i++){
sample_features.at((num+10) i) = temp_feature.at(0 i);
}
sample_labels.at((num+10) 0) = 1;
}
#endif

//获取训练数据的2样本
#if 1
for (int num = 0; num < 10 && getline(train_2_file image_path); num++)
{
feature_extract(image_path);
for (int i = 0; i < 16; i++){
sample_features.at((num + 20) i) = temp_feature.at(0 i);
}
sample_labels.at((num + 20) 0) = 2;
}
#endif

//获取训练数据的3样本
#if 1
for (int num = 0; num < 10 && getline(train_3_file image_path); num++)
{
feature_extract(image_path);
for (int i = 0; i < 16; i++){
sample_features.at((num + 30) i) = temp_feature.at(0 i);
}
sample_labels.at((num + 30) 0) = 3;
}
#endif

//获取训练数据的4样本
#if 1
for (int num = 0; num < 10 && getline(train_4_file image_path); num++)
{
feature_extract(image_path);
for (int i = 0; i < 16; i++){
sample_features.at((num + 40) i) = temp_feature.at(0 i);
}
sample_labels.at((num + 40) 0) = 4;
}
#endif

//获取训练数据的5样本
#if 1
for (int num = 0; num < 10 && getline(train_5_file image_path); num++)
{
feature_extract(image_path);
for (int i = 0; i < 16; i++){
sample_features.at((num + 50) i) = temp_feature.at(0 i);
}
sample_labels.at((num + 50) 0) = 5;
}
#endif

//训练SVM分类器
cout << “start svm training...“ << endl;
Ptr svm = SVM::create();
svm->set

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-04-01 20:06  digit_recognition\
     目录           0  2018-04-01 20:06  digit_recognition\Debug\
     文件      120832  2018-04-01 08:30  digit_recognition\Debug\digit_recognition.exe
     文件      957816  2018-04-01 08:30  digit_recognition\Debug\digit_recognition.ilk
     文件     1772544  2018-04-01 08:30  digit_recognition\Debug\digit_recognition.pdb
     目录           0  2018-04-01 20:06  digit_recognition\digit_recognition\
     文件    15532032  2018-04-01 08:33  digit_recognition\digit_recognition.sdf
     文件         997  2018-03-31 10:54  digit_recognition\digit_recognition.sln
     文件       21504  2018-04-01 08:33  digit_recognition\digit_recognition.v12.suo
     目录           0  2018-04-01 20:06  digit_recognition\digit_recognition\data\
     目录           0  2018-04-01 20:10  digit_recognition\digit_recognition\data\test_data\
     文件       12342  2010-01-30 15:54  digit_recognition\digit_recognition\data\test_data\0.bmp
     文件       12342  2010-02-01 18:28  digit_recognition\digit_recognition\data\test_data\1.bmp
     文件       12342  2010-02-01 18:31  digit_recognition\digit_recognition\data\test_data\2.bmp
     文件       12342  2010-02-01 18:35  digit_recognition\digit_recognition\data\test_data\3.bmp
     文件       12342  2017-04-27 23:02  digit_recognition\digit_recognition\data\test_data\4.bmp
     文件       12342  2017-04-27 23:03  digit_recognition\digit_recognition\data\test_data\5.bmp
     目录           0  2018-04-01 20:08  digit_recognition\digit_recognition\data\train_data\
     目录           0  2018-04-01 20:06  digit_recognition\digit_recognition\data\train_data\0\
     文件         258  2018-03-31 11:03  digit_recognition\digit_recognition\data\train_data\0.lst
     文件       12342  2010-01-30 15:54  digit_recognition\digit_recognition\data\train_data\0\00.bmp
     文件       12342  2010-02-01 18:27  digit_recognition\digit_recognition\data\train_data\0\01.bmp
     文件       12342  2010-02-01 20:43  digit_recognition\digit_recognition\data\train_data\0\02.bmp
     文件       12342  2010-02-01 20:42  digit_recognition\digit_recognition\data\train_data\0\03.bmp
     文件       12342  2010-01-30 15:56  digit_recognition\digit_recognition\data\train_data\0\04.bmp
     文件       12342  2010-01-30 15:56  digit_recognition\digit_recognition\data\train_data\0\05.bmp
     文件       12342  2010-02-01 20:43  digit_recognition\digit_recognition\data\train_data\0\06.bmp
     文件       12342  2010-02-01 18:26  digit_recognition\digit_recognition\data\train_data\0\07.bmp
     文件       12342  2010-02-01 18:26  digit_recognition\digit_recognition\data\train_data\0\08.bmp
     文件       12342  2010-02-01 18:26  digit_recognition\digit_recognition\data\train_data\0\09.bmp
     目录           0  2018-04-01 20:06  digit_recognition\digit_recognition\data\train_data\1\
............此处省略76个文件信息

评论

共有 条评论