点击查看 (人工智能) 系列文章
mnist本身是将数字手写体图像,归一化后信息合成的文件,分训练集和测试集两部分,每部分包含图片和标签两个文件,本文使用C++写的Demo将文件解码,并通过opencv将数据存储为常规的图像文件。源码下载地址:https://github.com/zacSuo/mnist
- t10k-images.idx3-ubyte
- t10k-labels.idx1-ubyte
- train-images.idx3-ubyte
- train-labels.idx1-ubyte
使用说明
环境要求
- visual studio 2012及以上版本
- opencv 2.4及以上版本
配置
启动前先通过项目属性,设置本地opencv的路径。
执行结果
在目录的两个文件夹,分别将测试集(test_images)和训练集(train_images)的图片保存到其中。
程序说明
解码图像
int read_Mnist(std::string filename, std::vector<cv::Mat> &vec)
{
int number_of_images = 0;
std::ifstream file(filename, std::ios::binary);
if (file.is_open()) {
int magic_number = 0;
int n_rows = 0;
int n_cols = 0;
file.read((char*)&magic_number, sizeof(magic_number));
magic_number = ReverseInt(magic_number);
file.read((char*)&number_of_images, sizeof(number_of_images));
number_of_images = ReverseInt(number_of_images);
file.read((char*)&n_rows, sizeof(n_rows));
n_rows = ReverseInt(n_rows);
file.read((