资源简介
用来对印刷体数字识别
代码片段和文件信息
//#include “stdafx.h“
#include
#include “opencv2/opencv.hpp“
#include
using namespace std;
using namespace cv;
#define SHOW_PROCESS 0
#define ON_STUDY 0
class NumTrainData
{
public:
NumTrainData()
{
memset(data 0 sizeof(data));
result = -1;
}
public:
float data[64];
int result;
};
vector buffer;
int featureLen = 64;
void swapBuffer(char* buf)
{
char temp;
temp = *(buf);
*buf = *(buf + 3);
*(buf + 3) = temp;
temp = *(buf + 1);
*(buf + 1) = *(buf + 2);
*(buf + 2) = temp;
}
void GetROI(Mat& src Mat& dst)
{
int left right top bottom;
left = src.cols;
right = 0;
top = src.rows;
bottom = 0;
//Get valid area
for (int i = 0; i {
for (int j = 0; j {
if (src.at(i j) > 0)
{
if (j if (j>right) right = j;
if (i if (i>bottom) bottom = i;
}
}
}
//Point center;
//center.x = (left + right) / 2;
//center.y = (top + bottom) / 2;
int width = right - left;
int height = bottom - top;
int len = (width < height) ? height : width;
//Create a squre
dst = Mat::zeros(len len CV_8UC1);
//Copy valid data to squre center
Rect dstRect((len - width) / 2 (len - height) / 2 width height);
Rect srcRect(left top width height);
Mat dstROI = dst(dstRect);
Mat srcROI = src(srcRect);
srcROI.copyTo(dstROI);
}
int ReadTrainData(int maxCount)
{
//Open image and label file
const char fileName[] = “../res/train-images.idx3-ubyte“;
const char labelFileName[] = “../res/train-labels.idx1-ubyte“;
ifstream lab_ifs(labelFileName ios_base::binary);
ifstream ifs(fileName ios_base::binary);
if (ifs.fail() == true)
return -1;
if (lab_ifs.fail() == true)
return -1;
//Read train data number and image rows / cols
char magicNum[4] ccount[4] crows[4] ccols[4];
ifs.read(magicNum sizeof(magicNum));
ifs.read(ccount sizeof(ccount));
ifs.read(crows sizeof(crows));
ifs.read(ccols sizeof(ccols));
int count rows cols;
swapBuffer(ccount);
swapBuffer(crows);
swapBuffer(ccols);
memcpy(&count ccount sizeof(count));
memcpy(&rows crows sizeof(rows));
memcpy(&cols ccols sizeof(cols));
//Just skip label header
lab_ifs.read(magicNum sizeof(magicNum));
lab_ifs.read(ccount sizeof(ccount));
//Create source and show image matrix
Mat src = Mat::zeros(rows cols CV_8UC1);
Mat temp = Mat::zeros(8 8 CV_8UC1);
Mat img dst;
char label = 0;
Scalar templateColor(255 0 255);
NumTrainData rtd;
//int loop = 1000;
int total = 0;
while (!ifs.eof())
{
if (total >= count)
break;
total++;
cout << total << endl;
//Read label
lab_ifs.read(&label 1);
label = label + ‘0‘;
//Read source data
ifs.read((char*)src.data rows * cols);
GetROI(src dst);
#if(SHOW_PROCESS)
//Too small to watch
img = Mat::zero
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-09-29 16:48 DigitReg\
目录 0 2016-09-29 16:47 DigitReg\Debug\
文件 106496 2016-01-10 19:04 DigitReg\Debug\DigitReg.exe
文件 801816 2016-01-10 19:04 DigitReg\Debug\DigitReg.ilk
文件 2026496 2016-01-10 19:04 DigitReg\Debug\DigitReg.pdb
目录 0 2016-09-29 16:47 DigitReg\DigitReg\
目录 0 2016-09-29 16:47 DigitReg\DigitReg\Debug\
文件 1012 2016-01-09 22:27 DigitReg\DigitReg\Debug\DigitReg.Build.CppClean.log
文件 1884 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.log
目录 0 2016-09-29 16:47 DigitReg\DigitReg\Debug\DigitReg.tlog\
文件 34358 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\CL.read.1.tlog
文件 3246 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\CL.write.1.tlog
文件 163 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\DigitReg.lastbuildstate
文件 3114 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\cl.command.1.tlog
文件 2532 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\li
文件 5790 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\li
文件 868 2016-01-10 19:04 DigitReg\DigitReg\Debug\DigitReg.tlog\li
文件 2579 2016-01-09 22:27 DigitReg\DigitReg\Debug\digit_recog.obj
文件 2487 2016-01-09 22:27 DigitReg\DigitReg\Debug\test1.obj
文件 2487 2016-01-09 22:27 DigitReg\DigitReg\Debug\test2.obj
文件 358078 2016-01-10 19:04 DigitReg\DigitReg\Debug\test3.obj
文件 2487 2016-01-10 10:33 DigitReg\DigitReg\Debug\test4.obj
文件 814080 2016-01-10 19:04 DigitReg\DigitReg\Debug\vc120.idb
文件 1241088 2016-01-10 19:04 DigitReg\DigitReg\Debug\vc120.pdb
文件 5221 2016-01-09 15:46 DigitReg\DigitReg\DigitReg.vcxproj
文件 1364 2016-01-09 15:46 DigitReg\DigitReg\DigitReg.vcxproj.filters
文件 10858 2016-01-06 21:21 DigitReg\DigitReg\test.cpp
文件 1767 2016-01-07 09:17 DigitReg\DigitReg\test1.cpp
文件 2404 2016-01-08 21:06 DigitReg\DigitReg\test2.cpp
文件 3572 2016-01-10 19:04 DigitReg\DigitReg\test3.cpp
文件 534 2016-01-10 10:33 DigitReg\DigitReg\test4.cpp
............此处省略3个文件信息
相关资源
- itti视觉显著性计算模型opencv实现
- 异常行为检测
- qt+opencv视频图像采集与基于tcp协议的
- opencv2.4.3和4.0函数手册带目录可搜索
- 遗留物检测
- 笔记本OpenCV调用摄像头进行人脸捕捉
- VS+OPENCV手势识别
- opencv下haarclassifiercascade加上LBPHFaceRe
- 图片动漫风格化
- 基于SVM与ANN的车牌识别
- OpenCV实现同一窗口显示多幅图片
- haar特征的手势检测OpenCV
- 基于opencv的人脸表情识别的预处理
- opencv+qt+vs的摄像头视频显示和处理G
- OpenCV算法精解——源码和测试图片
- opencv结构光生成代码
- opencv 书籍
- 基于PCA的人脸识别系统
-
haartraining+ob
jectmarker,opencv,Adaboo - opencv提取光斑质心
- Ubuntu下Opencv显示中文
- 划痕缺陷检测
- 单USB双目摄像头拍摄程序
- RAAR相位恢复 opencv
- FTVd全变差去模糊opencv实现
- 全变差TV去噪(split bregman) opencv
- opencv开启本地摄像头并拍照
- 基于opencv的激光线中心提取源码
- opencv3.0 鱼眼标定校正 改进
- 简单的一维高斯滤波程序
评论
共有 条评论