资源简介
用来对印刷体数字识别

代码片段和文件信息
//#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个文件信息
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- 手写数字识别-模板匹配法
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- GUI数字识别系统代码
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
评论
共有 条评论