资源简介
opencv3.1用SVM实现MNIST,可读取自己的图片,用Windows画板黑底白字,保存在测试项目路径下即可识别手写字
代码片段和文件信息
#include
#include
#include “opencv2/imgcodecs.hpp“
#include
#include
#include
using namespace cv;
using namespace cv::ml;
using namespace std;
//大端转小端
int reverseInt(int i);
void main()
{
//读取测试样本集
ifstream if_testImags(“t10k-images-idx3-ubyte“ ios::binary);
//读取失败
if (true == if_testImags.fail())
{
cout << “Please check the path of file t10k-images-idx3-ubyte“ << endl;
return;
}
int magic_num testImgsNum nrows ncols;
//读取magic number
if_testImags.read((char*)&magic_num sizeof(magic_num));
magic_num = reverseInt(magic_num);
cout << “测试图像数据库t10k-images-idx3-ubyte的magic number为:“ << magic_num << endl;
//读取测试图像总数
if_testImags.read((char*)&testImgsNum sizeof(testImgsNum));
testImgsNum = reverseInt(testImgsNum);
cout << “测试图像数据库t10k-images-idx3-ubyte的图像总数为:“ << testImgsNum << endl;
//读取图像的行大小
if_testImags.read((char*)&nrows sizeof(nrows));
nrows = reverseInt(nrows);
cout << “测试图像数据库t10k-images-idx3-ubyte的图像维度row为:“ << nrows << endl;
//读取图像的列大小
if_testImags.read((char*)&ncols sizeof(ncols));
ncols = reverseInt(ncols);
cout << “测试图像数据库t10k-images-idx3-ubyte的图像维度col为:“ << ncols << endl;
//读取测试图像
int imgVectorLen = nrows * ncols;
Mat testFeatures = Mat::zeros(testImgsNum imgVectorLen CV_32FC1);
Mat temp = Mat::zeros(nrows ncols CV_8UC1);
for (int i = 0; i < testImgsNum; i++)
{
if_testImags.read((char*)temp.data imgVectorLen);
Mat tempFloat;
//由于SVM需要的测试数据格式是CV_32FC1,在这里进行转换
temp.convertTo(tempFloat CV_32FC1);
memcpy(testFeatures.data + i*imgVectorLen * sizeof(float) tempFloat.data imgVectorLen * sizeof(float));
}
//归一化
testFeatures = testFeatures / 255;
//读取测试图像对应的分类标签
ifstream if_testLabels(“t10k-labels-idx1-ubyte“ ios::binary);
//读取失败
if (true == if_testLabels.fail())
{
cout << “Please check the path of file t10k-labels-idx1-ubyte“ << endl;
return;
}
int magic_num_2 testLblsNum;
//读取magic number
if_testLabels.read((char*)&magic_num_2 sizeof(magic_num_2));
magic_num_2 = reverseInt(magic_num_2);
cout << “测试图像标签数据库t10k-labels-idx1-ubyte的magic number为:“ << magic_num_2 << endl;
//读取测试图像的分类标签的数量
if_testLabels.read((char*)&testLblsNum sizeof(testLblsNum));
testLblsNum = reverseInt(testLblsNum);
cout << “测试图像标签数据库t10k-labels-idx1-ubyte的标签总数为:“ << testLblsNum << endl;
//由于SVM需要输入的标签类型是CV_32SC1,在这里进行转换
Mat testLabels = Mat::zeros(testLblsNum 1 CV_32SC1);
Mat readLabels = Mat::zeros(testLblsNum 1 CV_8UC1);
if_testLabels.read((char*)readLabels.data testLblsNum * sizeof(char));
readLabels.convertTo(testLabels CV_32SC1);
//载入训练好的SVM模型
Ptr svm = SVM::load(“mnist.xml“);
int sum = 0;
//对每一个测试图像进行SVM分类预测
for (int i = 0; i < testLblsNum; i++)
{
Mat predict_mat = Mat::zeros(1 imgVectorLen CV_32FC1);
memcpy(predict_mat.data testFeatures.data + i*imgVectorLen * sizeof(float) im
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 31744 2018-05-08 14:35 SVM_MNIST\.vs\SVM_MNIST\v14\.suo
文件 3190 2018-05-07 20:49 SVM_MNIST\svmtest\2.bmp
文件 1862 2018-05-07 20:49 SVM_MNIST\svmtest\7.bmp
文件 31409497 2018-05-08 09:54 SVM_MNIST\svmtest\mnist.xm
文件 5783 2018-05-08 14:24 SVM_MNIST\svmtest\svmtest.vcxproj
文件 950 2018-05-08 14:09 SVM_MNIST\svmtest\svmtest.vcxproj.filters
文件 7840016 2018-05-04 23:16 SVM_MNIST\svmtest\t10k-images-idx3-ubyte
文件 10008 2018-05-04 23:16 SVM_MNIST\svmtest\t10k-labels-idx1-ubyte
文件 47040016 2018-05-04 23:16 SVM_MNIST\svmtest\train-images-idx3-ubyte
文件 60008 2018-05-04 23:16 SVM_MNIST\svmtest\train-labels-idx1-ubyte
文件 6008 2018-05-08 14:20 SVM_MNIST\svmtest\traintest.cpp
文件 1145 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.log
文件 586 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\CL.command.1.tlog
文件 20094 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\CL.read.1.tlog
文件 552 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\CL.write.1.tlog
文件 1260 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\li
文件 3268 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\li
文件 528 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\li
文件 204 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\svmtest.lastbuildstate
文件 480379 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\traintest.obj
文件 535552 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\vc140.idb
文件 815104 2018-05-08 14:24 SVM_MNIST\svmtest\x64\Debug\vc140.pdb
文件 31409497 2018-05-08 14:23 SVM_MNIST\SVM_MNIST\mnist.xm
文件 3149 2018-05-08 14:03 SVM_MNIST\SVM_MNIST\svmtrain.cpp
文件 5784 2018-05-08 13:35 SVM_MNIST\SVM_MNIST\SVM_MNIST.vcxproj
文件 949 2018-05-08 13:35 SVM_MNIST\SVM_MNIST\SVM_MNIST.vcxproj.filters
文件 7840016 2018-05-04 23:16 SVM_MNIST\SVM_MNIST\t10k-images-idx3-ubyte
文件 10008 2018-05-04 23:16 SVM_MNIST\SVM_MNIST\t10k-labels-idx1-ubyte
文件 47040016 2018-05-04 23:16 SVM_MNIST\SVM_MNIST\train-images-idx3-ubyte
文件 60008 2018-05-04 23:16 SVM_MNIST\SVM_MNIST\train-labels-idx1-ubyte
............此处省略37个文件信息
相关资源
- fashion-mnist.zip
- opencv调用海康威视摄像头并实时编码
- Learning_OpenCV_3.pdf
- 基于opencv车牌识别源码
- ippicv_2017u3_lnx_intel64_20170822.tgz包
- opencv4.1_x86.rar
- opencv for qt5.8
- OpenCV两种方法显示中文
- opencv2.2.0版本
- 最经典的开源车牌识别代码 OPENCV
- 《学习OpenCV(中文版)》-于仕琪
- opencv打开图片并显示在Qt界面上
- opencv1.0.zip
- OpenCV3+Qt5视频处理GUI程序
- Opencv2.0.0
- HOG+SVM的行人图片和视频检测码源及所
- MNIST_data
- 识别出表盘的指针刻度-opencv
- 深度学习基础网络模型(mnist手写体识
- MNIST手写字体识别结果模板3万轮训练
- opencv4.0.1+contrib+vs2017编译x64x86完全版本
- opencv论文合集2
- opencv3编译需要的opencv_ffmpeg_64.dll
- OpenCVTest
- SVM及SMO重要外文文献书籍
- 编译好的OpenCV3.4.2+Qt5.9+Contrib版
- 基于OPENCV的运动估计-块匹配,根据锚
- 基于svm的光谱分类
- opencv 图片处理,分割字符
- opencv4.1+contrib vs2017编译 64位版
评论
共有 条评论