基于opencv的手写数字字符识别
实现了基于opencv 的手写数字字符识别
主要参照文章:
http://blog.damiles.com/2008/11/basic-ocr-in-opencv/
基本上就是按着人家的代码来配置的,完后小改动了几个参数,写了一个文档,方便大家学习吧。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 248320 2013-11-29 17:36 基于opencv 的手写数字字符识别基于opencv的手写数字字符识别.doc
文件 1539898 2013-11-19 11:03 基于opencv 的手写数字字符识别基于OpenCV的脱机手写字符识别技术_许雁飞.pdf
文件 87515 2013-11-27 19:24 基于opencv 的手写数字字符识别实验结果截图实验结果2.jpg
文件 89254 2013-11-27 19:26 基于opencv 的手写数字字符识别实验结果截图实验结果9.jpg
文件 29696 2013-11-24 22:12 基于opencv 的手写数字字符识别流程图主流程图.vsd
文件 59904 2013-11-25 17:39 基于opencv 的手写数字字符识别流程图细化流程图.vsd
文件 23581429 2013-11-28 16:19 基于opencv 的手写数字字符识别源代码VS工程Character_Recognition.rar
文件 3885 2013-11-27 20:08 基于opencv 的手写数字字符识别源代码代码asicOCR.cpp
文件 608 2013-11-26 17:34 基于opencv 的手写数字字符识别源代码代码asicOCR.h
文件 3534 2013-11-25 22:47 基于opencv 的手写数字字符识别源代码代码main.cpp
文件 3013 2013-11-27 17:53 基于opencv 的手写数字字符识别源代码代码preprocessing.cpp
文件 319 2013-11-21 20:47 基于opencv 的手写数字字符识别源代码代码preprocessing.h
文件 2992128 2013-11-27 20:08 基于opencv 的手写数字字符识别程序Character_Recognition.exe
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 00.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 01.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 02.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 03.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 04.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 05.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 06.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 07.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 08.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 09.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 10.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 11.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 12.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 13.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 14.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 15.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 16.pbm
............此处省略1005个文件信息
/*
* basicOCR.c
*
*
* Created by damiles on 18/11/08.
* Copyright 2008 Damiles. GPL License
*
*/
#ifdef _CH_
#pragma package
#endif
#ifndef _EiC
#include “cv.h“
#include “highgui.h“
#include “ml.h“
#include
#include
#include
#endif
#include “preprocessing.h“
#include “basicOCR.h“
basicOCR::basicOCR()//构造函数
{
//initial
sprintf(file_path “OCR/“);
train_samples = 50;//训练样本,总共100个,50个训练,50个测试
classes= 10;//暂时识别十个数字
size=128;//
trainData = cvCreateMat(train_samples*classes size*size CV_32FC1);//训练数据的矩阵
trainClasses = cvCreateMat(train_samples*classes 1 CV_32FC1);
//Get data (get images and process it)
getData();
//train
train();
//Test
test();
printf(“ ------------------------------------------------------------------------
“);
printf(“| 识别结果 | 测试精度 | 准确率 |
“);
printf(“ ------------------------------------------------------------------------
“);
}
void basicOCR::getData()
{
IplImage* src_image;
IplImage prs_image;
CvMat rowdata;
char file[255];
int ij;
for(i =0; i {
for( j = 0; j< train_samples; j++)
{
//加载pbm格式图像,作为训练
if(j<10)
sprintf(file“%s%d/%d0%d.pbm“file_path i i j);
else
sprintf(file“%s%d/%d%d.pbm“file_path i i j);
src_image = cvLoadImage(file0);
if(!src_image)
{
printf(“Error: Cant load image %s
“ file);
//exit(-1);
}
//process file
prs_image = preprocessing(src_image size size);
//Set class label
cvGetRow(trainClasses &row i*train_samples + j);
cvSet(&row cvRealScalar(i));
//Set data
cvGetRow(trainData &row i*train_samples + j);
IplImage* img = cvCreateImage( cvSize( size size ) IPL_DEPTH_32F 1 );
//convert 8 bits image to 32 float image
cvConvertScale(&prs_image img 0.0039215 0);
cvGetSubRect(img &data cvRect(00 sizesize));
CvMat row_header *row1;
//convert data matrix sizexsize to vecor
row1 = cvReshape( &data &row_header 0 1 );
cvCopy(row1 &row NULL);
}
}
}
void basicOCR::train()
{
knn=new CvKNearest( trainData trainClasses 0 false K );
}
float basicOCR::classify(IplImage* img int showResult)//第二个参数主要用来控制是测试训练样本还是手写识别
{
IplImage prs_image;
CvMat data;
CvMat* nearest=cvCreateMat(1KCV_32FC1);
float result;
//处理输入的图像
prs_image = preprocessing(img size size);
//Set data
IplImage* img32 = cvCreateImage( cvSize( size size ) IPL_DEPTH_32F 1 );
cvConvertScale(&prs_image img32 0.0039215 0);
cvGetSubRect(img32 &data cvRect(00 sizesize));
CvMat row_header *row1;
row1 = cvReshape( &data &row_header 0 1 );
result=knn->find_nearest(row1K00nearest0);
int accuracy=0;
for(int i=0;i {
if( (nearest->data.fl[i]) == result)
accuracy++;
}
float pre=100*((float)accuracy/(float)K);
if(showResult==1)
{
printf(“| %.0f | %.2f%% | %d of %d |
“resultpreaccuracyK);
printf(“ ------------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 248320 2013-11-29 17:36 基于opencv 的手写数字字符识别基于opencv的手写数字字符识别.doc
文件 1539898 2013-11-19 11:03 基于opencv 的手写数字字符识别基于OpenCV的脱机手写字符识别技术_许雁飞.pdf
文件 87515 2013-11-27 19:24 基于opencv 的手写数字字符识别实验结果截图实验结果2.jpg
文件 89254 2013-11-27 19:26 基于opencv 的手写数字字符识别实验结果截图实验结果9.jpg
文件 29696 2013-11-24 22:12 基于opencv 的手写数字字符识别流程图主流程图.vsd
文件 59904 2013-11-25 17:39 基于opencv 的手写数字字符识别流程图细化流程图.vsd
文件 23581429 2013-11-28 16:19 基于opencv 的手写数字字符识别源代码VS工程Character_Recognition.rar
文件 3885 2013-11-27 20:08 基于opencv 的手写数字字符识别源代码代码asicOCR.cpp
文件 608 2013-11-26 17:34 基于opencv 的手写数字字符识别源代码代码asicOCR.h
文件 3534 2013-11-25 22:47 基于opencv 的手写数字字符识别源代码代码main.cpp
文件 3013 2013-11-27 17:53 基于opencv 的手写数字字符识别源代码代码preprocessing.cpp
文件 319 2013-11-21 20:47 基于opencv 的手写数字字符识别源代码代码preprocessing.h
文件 2992128 2013-11-27 20:08 基于opencv 的手写数字字符识别程序Character_Recognition.exe
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 00.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 01.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 02.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 03.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 04.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 05.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 06.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 07.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 08.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 09.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 10.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 11.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 12.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 13.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 14.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 15.pbm
文件 16580 2012-07-02 01:25 基于opencv 的手写数字字符识别程序OCR 16.pbm
............此处省略1005个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)