• 大小: 28.76MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-11
  • 语言: 其他
  • 标签: OPENCV  SVM  MNIST  

资源简介

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.xml

     文件       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\link.command.1.tlog

     文件       3268  2018-05-08 14:24  SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\link.read.1.tlog

     文件        528  2018-05-08 14:24  SVM_MNIST\svmtest\x64\Debug\svmtest.tlog\link.write.1.tlog

     文件        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.xml

     文件       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个文件信息

评论

共有 条评论