资源简介
本资源为印刷体数字识别程序,使用opencv库,经过本人验证可用。

代码片段和文件信息
#include “opencv2/ml/ml.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/imgproc/imgproc.hpp“
#include
#include
using namespace cv;
using namespace std;
const int train_samples = 1;
const int classes = 10;
const int sizex = 20;
const int sizey = 30;
const int ImageSize = sizex * sizey;
char pathToImages[] = “./images“;
void PreProcessImage(Mat *inImageMat *outImageint sizex int sizey);
void LearnFromImages(CvMat* trainData CvMat* trainClasses);
void RunSelfTest(KNearest& knn2);
void AnalyseImage(KNearest knearest);
/** @function main */
int main(int argc char** argv)
{
CvMat* trainData = cvCreateMat(classes * train_samplesImageSize CV_32FC1);
CvMat* trainClasses = cvCreateMat(classes * train_samples 1 CV_32FC1);
namedWindow(“single“ CV_WINDOW_AUTOSIZE);
namedWindow(“all“CV_WINDOW_AUTOSIZE);
LearnFromImages(trainData trainClasses);
KNearest knearest(trainData trainClasses);
RunSelfTest(knearest);
cout << “losgehts\n“;
AnalyseImage(knearest);
return 0;
}
void PreProcessImage(Mat *inImageMat *outImageint sizex int sizey)
{
Mat grayImageblurredImagethresholdImagecontourImageregionOfInterest;
vector > contours;
cvtColor(*inImagegrayImage COLOR_BGR2GRAY);
GaussianBlur(grayImage blurredImage Size(5 5) 2 2);
adaptiveThreshold(blurredImage thresholdImage 255 1 1 11 2);
thresholdImage.copyTo(contourImage);
findContours(contourImage contours RETR_LIST CHAIN_APPROX_SIMPLE);
int idx = 0;
size_t area = 0;
for (size_t i = 0; i < contours.size(); i++)
{
if (area < contours[i].size() )
{
idx = i;
area = contours[i].size();
}
}
Rect rec = boundingRect(contours[idx]);
regionOfInterest = thresholdImage(rec);
resize(regionOfInterest*outImage Size(sizex sizey));
}
void LearnFromImages(CvMat* trainData CvMat* trainClasses)
{
Mat img;
char file[255];
for (int i = 0; i < classes; i++)
{
sprintf(file “%s/%d.png“ pathToImages i);
img = imread(file 1);
if (!img.data)
{
cout << “File “ << file << “ not found\n“;
exit(1);
}
Mat outfile;
PreProcessImage(&img &outfile sizex sizey);
for (int n = 0; n < ImageSize; n++)
{
trainData->data.fl[i * ImageSize + n] = outfile.data[n];
}
trainClasses->data.fl[i] = i;
}
}
void RunSelfTest(KNearest& knn2)
{
Mat img;
CvMat* sample2 = cvCreateMat(1 ImageSize CV_32FC1);
// SelfTest
char file[255];
int z = 0;
while (z++ < 10)
{
int iSecret = rand() % 10;
//cout << iSecret;
sprintf(file “%s/%d.png“ pathToImages iSecret);
img = imread(file 1);
Mat stagedImage;
PreProcessImage(&img &stagedImage sizex sizey);
for (int n = 0; n < ImageSize; n++)
{
sample2->data.fl[n] = stagedImage.data[n];
}
float detectedClass = knn2.find_nearest(sample2 1);
if (iSecret != (int) ((detectedClass)))
{
cout << “Falsch. Ist “ << iSecret << “ aber geraten ist “
<< (int) ((detectedClass));
exit(1);
}
cout << “Richtig “
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1699 2015-03-14 09:09 digit_recognition\images\0.png
文件 1012 2015-03-14 09:09 digit_recognition\images\1.png
文件 1569 2015-03-14 09:09 digit_recognition\images\2.png
文件 1554 2015-03-14 09:10 digit_recognition\images\3.png
文件 1393 2015-03-14 09:10 digit_recognition\images\4.png
文件 1597 2015-03-14 09:10 digit_recognition\images\5.png
文件 1532 2015-03-14 09:10 digit_recognition\images\6.png
文件 1189 2015-03-14 09:10 digit_recognition\images\7.png
文件 147997 2015-03-14 09:02 digit_recognition\images\buchstaben.png
文件 1595 2015-03-14 09:10 digit_recognition\images\8.png
文件 1645 2015-03-14 09:10 digit_recognition\images\9.png
文件 4272 2015-03-14 09:19 digit_recognition\digit_recog.cpp
文件 1446 2015-03-14 09:07 digit_recognition\Makefile~
文件 165 2015-03-14 09:24 digit_recognition\Makefile
目录 0 2015-03-14 09:12 digit_recognition\images\
目录 0 2015-03-14 09:24 digit_recognition\
相关资源
- 基于OpenCV的数字识别468815
- 手写数字识别-模板匹配法
- GUI数字识别系统代码
- 基于Tensorflow多层神经网络的MNIST手写
- HOG+SVM实现数字识别
- stm32+ov7670数字识别
- 卷积神经网络实现手写数字识别
- MNIST数据集 txt版
- 3种模板匹配法实现的手写数字识别
- 基于CNN的手写数字识别
- 基于FPGA的印刷体数字识别系统设计
- mnist_10k_sprite.png图片
- tesseract-ocr- 的字母数字识别
- BP数字识别代码——了解和测试BP神经
- 基于SVM的手写数字识别Opencv+图像集
- opencv 数字识别
- 用BP神经网络实现minist手写数字识别
- 基于STM32的数字字符识别.zip
- 精心整理的手写数字识别论文11篇
- 0-9数字识别样本
- 数字和英文字母识别
- BP神经网络实现手写体数字识别
- 并行化实现基于BP神经网络的手写体数
- 手写数字识别10000次cnn结果 (.caffem
- stm32单片机knn算法手写数字识别
- 3D MNIST-3D数字识别数据
- Tesseract 4.0 for VS2015及OpenCV数字识别程
- 使用OpenCV 手势识别
- USPS手写体数字识别图片库
- 手写数字9000张图片.rar
评论
共有 条评论