资源简介
自己写的手写数字识别源码,识别效果还可以,基于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个文件信息
- 上一篇:教学质量评估系统教学质量评估系统
- 下一篇:ISOIEC 14496-15 2014
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- 基于蚁群算法优化SVM的瓦斯涌出量预
- 基于模糊聚类和SVM的瓦斯涌出量预测
- 基于CAN总线与ZigBee的瓦斯实时监测及
- SVM-Light资料,使用说明
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- 果蝇算法融合SVM的开采沉陷预测模型
- opencv_contrib-3.4.0.zip
- BoW|Pyramid BoW+SVM进行图像分类
- opencv2.4.9源码分析——SIFT
- 基于libsvm的图像分割代码
- 用两个摄像头实现,双目标定,双目
- 手写数字识别-模板匹配法
- 基于SVM及两类运动想象的多通道特征
- 小波包和SVM在轴承故障识别中的应用
- 林智仁教授最新版本LibSVM工具箱
- 台湾林教授的支持向量机libsvm
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 新闻分类语料
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- libsvm-3.20
评论
共有 条评论