资源简介
原理简单介绍:使用OpenCV中svm训练英文字符图片,进而识别。
资源包括完整代码,训练图像,测试图片
代码片段和文件信息
#include “stdafx.h“
#include “opencv2/opencv.hpp“
#include “windows.h“
#include “fstream“
using namespace std;
using namespace cv;
int _tmain(int argc _TCHAR* argv[])
{
vector img_path;//输入文件名变量
vector img_catg; //标签
int nLine = 0;
string buf;
ifstream svm_data( “E:\\研究生信息\\模式识别作业\\英文字母训练集\\char.txt“ );//训练样本图片的路径都写在这个txt文件中bat批处理 “D:\\nums\\hb.txt“
unsigned long n;
while( svm_data )//将训练样本文件依次读取进来
{
if( getline( svm_data buf ) ) //将输入流svm_data中读到的字符存入buf中
{
nLine ++;
if( nLine % 2 == 0 )//注:奇数行是图片全路径,偶数行是标签
{
img_catg.push_back( atoi( buf.c_str() ) );
//atoi将字符串转换成整型,标志(01,2,...,9),注意这里至少要有两个类别,否则会出错
// 函数声明:const char *c_str(); c_str()函数返回一个指向正规字符串的指针 内容与本字符串相同
}
else
{
img_path.push_back( buf );//图像路径
}
}
}
svm_data.close();//关闭文件
CvMat *data_mat *res_mat; //定义样本矩阵,类型矩阵
int nImgNum = nLine / 2; //nImgNum:横坐标是样本数量,只有文本行数的一半,另一半是标签
data_mat = cvCreateMat( nImgNum 324 CV_32FC1 ); //样本矩阵
//第二个参数,即矩阵的列是由下面的descriptors的大小决定的,可以由descriptors.size()得到,
//且对于不同大小的输入训练图片,这个值是不同的
cvSetZero( data_mat );
//类型矩阵存储每个样本的类型标志
res_mat = cvCreateMat( nImgNum 1 CV_32FC1 );
cvSetZero( res_mat );
IplImage* src;
IplImage* trainImg=cvCreateImage(cvSize(2828)83);
//需要分析的图片,这里默认设定图片是28*28大小,所以上面定义了324,如果要更改图片大小,
//可以先用debug查看一下descriptors是多少,然后设定好再运行
//处理HOG特征
for( string::size_type i = 0; i != img_path.size(); i++ )
{
src=cvLoadImage(img_path[i].c_str()1);
if( src == NULL )
{
cout<<“ can not load the image: “< //continue;
return 0;
}
cout<<“ 处理: “<
cvResize(srctrainImg); //读取图片,归一化处理
HOGDescriptor *hog=new HOGDescriptor(cvSize(2828)cvSize(1414)cvSize(77)cvSize(77)9);
vectordescriptors;//存放结果,数组
hog->compute(trainImg descriptorsSize(11) Size(00)); //Hog特征计算
cout<<“HOG dims: “<riptors.size()< n=0;
for(vector::iterator iter=descriptors.begin();iter!=descriptors.end();iter++) //迭代器
{
cvmSet(data_matin*iter);//存储HOG特征到data_mat矩阵中
n++;
}
cvmSet( res_mat i 0 img_catg[i] );
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3680 2016-08-24 11:46 测试集\a-21.bmp
文件 3680 2016-08-24 11:45 测试集\a-22.bmp
文件 3680 2016-08-24 11:45 测试集\a-23.bmp
文件 3680 2016-08-24 11:45 测试集\a-24.bmp
文件 3680 2016-08-24 11:45 测试集\a-25.bmp
文件 7654 2016-07-30 10:10 测试集\a21.bmp
文件 7654 2016-07-30 10:10 测试集\a22.bmp
文件 7654 2016-07-30 10:10 测试集\a23.bmp
文件 7654 2016-07-30 10:10 测试集\a24.bmp
文件 7654 2016-07-30 10:10 测试集\a25.bmp
文件 3680 2016-08-24 11:44 测试集\b-21.bmp
文件 3680 2016-08-24 11:44 测试集\b-22.bmp
文件 3680 2016-08-24 11:44 测试集\b-23.bmp
文件 3680 2016-08-24 11:44 测试集\b-24.bmp
文件 3680 2016-08-24 11:45 测试集\b-25.bmp
文件 7654 2016-07-30 10:10 测试集\b21.bmp
文件 7654 2016-07-30 10:10 测试集\b22.bmp
文件 7654 2016-07-30 10:10 测试集\b23.bmp
文件 7654 2016-07-30 10:10 测试集\b24.bmp
文件 7654 2016-07-30 10:10 测试集\b25.bmp
文件 7654 2016-07-30 10:10 测试集\c21.bmp
文件 7654 2016-07-30 10:10 测试集\c22.bmp
文件 7654 2016-07-30 10:10 测试集\c23.bmp
文件 7654 2016-07-30 10:10 测试集\c24.bmp
文件 7654 2016-07-30 10:10 测试集\c25.bmp
文件 7654 2016-07-30 10:10 测试集\d21.bmp
文件 7654 2016-07-30 10:10 测试集\d22.bmp
文件 7654 2016-07-30 10:10 测试集\d23.bmp
文件 7654 2016-07-30 10:10 测试集\d24.bmp
文件 7654 2016-07-30 10:10 测试集\d25.bmp
............此处省略749个文件信息
- 上一篇:比亚迪物料编码培训教材
- 下一篇:现代通信原理-清华曹志刚PDF版 经典
相关资源
- 车牌识别字符识别图片集
- 基于STM32的数字字符识别.zip
- 基于卷积神经网络的车牌字符识别_董
- 字符识别程序,26个英文字母的识别
- 车辆字符识别图片以及识别代码
- 基于stm32的字符识别卡在内存上了
- 基于模板匹配和谷歌开源TESSERACT库的
- BP神经网络的车牌字符识别的研究
- 基于opencv的手写数字字符识别
- mnist手写字符集0-9jpg图片
- 车牌识别数据集中英
- 34种字符识别-BP神经网络算法-VS2103+
- tesseract字符识别文件 VS2015 X64
- 基于qt5.1.1与opencv2.4.7车牌字符切割与
- 几种车牌字符识别算法的比较
- letter-recognition字符识别数据库2
- 车牌字符字库 车牌识别字库 车牌字符
- 用于车牌字符识别的SVM算法
- 车牌的字符分割和字符识别的研究与
- 基于MIP神经网络分类器的OCR字符识别
- 车牌字符识别字符训练样本字符模板
- opencv 车牌 字符识别
- 转基于卷积神经网络的车牌照字符识
- 基于模板匹配的字符识别
- 手写字符识别源代码
- 计算机专业英语论文翻译20000字(脱机
- 集装箱的字符识别,演示集装箱号码
评论
共有 条评论