mnist数据集是以二进制形式保存的,这里借助OpenCV把mnist数据集转换成图片格式。转换程序如下:

#include <iostream>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp> using namespace cv;
using namespace std; int main()
{
//mnist数据存放路径
string train_test_image[2] = { "D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_train_lmdb\\train-images.idx3-ubyte",
"D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_test_lmdb\\t10k-images.idx3-ubyte" };
string train_test_label[2] = { "D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_train_lmdb\\train-labels.idx1-ubyte",
"D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_test_lmdb\\t10k-labels.idx1-ubyte" };
int label_num[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
//图片保存路径
string dir[2] = { "D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_train_image\\",
"D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_test_image\\" };
for (int iter = 0; iter < 2; iter++)
{
//读取label
ifstream fin_label(train_test_label[iter], ios::binary);
vector<int> label;
int magic_number;
fin_label.read((char *)(&magic_number), sizeof(magic_number));
int number_items;
fin_label.read((char *)(&number_items), sizeof(number_items));
while (!fin_label.eof())
{
char label_tmp;
fin_label.read((char *)&label_tmp, sizeof(label_tmp));
label.push_back(label_tmp);
} //读取图片
vector<Mat> image;
int width = 28, height = 28;
ifstream fin_image(train_test_image[iter], ios::binary);
int magic_number1;
fin_image.read((char *)(&magic_number1), sizeof(magic_number1));
int number_images;
fin_image.read((char *)(&number_images), sizeof(number_images));
int num_rows;
fin_image.read((char *)(&num_rows), sizeof(num_rows));
int num_columns;
fin_image.read((char *)(&num_columns), sizeof(num_columns));
while (!fin_image.eof())
{
unsigned char tmp;
Mat image_tmp(width, height, CV_8UC1);
for (int r = 0; r < image_tmp.rows; r++)
{
for (int c = 0; c < image_tmp.cols; c++)
{
fin_image.read((char *)&tmp, sizeof(tmp));
image_tmp.at<uchar>(r, c) = tmp;
}
}
image.push_back(image_tmp);
} for (int i = 0; i < label.size(); i++)
{
char clabel[10];
sprintf_s(clabel, "%d", label[i]);
string slabel = clabel;
char clabel_num[10];
sprintf_s(clabel_num, "%d", label_num[label[i]]);
string slabel_num = clabel_num;
string name = dir[iter] + slabel + "_" + slabel_num + ".jpg";
imwrite(name, image[i]);
//显示图片
imshow("mnist", image[i]);
waitKey(100);
label_num[label[i]]++;
}
}
return 0;
}

转换出来一共有60000个训练图片,10000个测试图片,部分训练图片:

下边使用OpenCV把训练图片的0~9的前10个图片显示出来:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp> using namespace cv;
using namespace std; int main()
{
Mat MNIST = Mat(Size(289, 289), CV_8UC1, Scalar::all(255));
string mnistPath = "D:\\Software\\Caffe\\caffe-master\\data\\mnist\\mnist_train_image\\";
string mnistImagePath;
stringstream str;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
str.clear();
str << i;
string stri, strj;
str >> stri;
str.clear();
str << j;
str >> strj;
mnistImagePath = mnistPath + stri + "_" + strj + ".jpg";
Mat image = imread(mnistImagePath, 0);
Mat roi = MNIST(Rect(j * 28 + j, i * 28 + i, 28, 28));
addWeighted(roi, 0, image, 1, 0, roi);
imshow("mnist", MNIST);
}
waitKey();
}
}

执行结果:

使用OpenCV把二进制mnist数据集转换为图片的更多相关文章

  1. Python 把二进制mnist数据库转换为图片

    mnist数据库可以通过caffe里的get_mnist.sh文件下载,路径是: caffe-master/data/mnist/get_mnist.sh,get_mnist.sh内容如下: #!/u ...

  2. php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现

    php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($c ...

  3. Windows下mnist数据集caffemodel分类模型训练及测试

    1. MNIST数据集介绍 MNIST是一个手写数字数据库,样本收集的是美国中学生手写样本,比较符合实际情况,大体上样本是这样的: MNIST数据库有以下特性: 包含了60000个训练样本集和1000 ...

  4. Caffe系列4——基于Caffe的MNIST数据集训练与测试(手把手教你使用Lenet识别手写字体)

    基于Caffe的MNIST数据集训练与测试 原创:转载请注明https://www.cnblogs.com/xiaoboge/p/10688926.html  摘要 在前面的博文中,我详细介绍了Caf ...

  5. MNIST数据集转化为二维图片

    #coding: utf-8 from tensorflow.examples.tutorials.mnist import input_data import scipy.misc import o ...

  6. IOS 图片转换二进制 二进制转换为图片

    //类方法 图片 转换为二进制 +(NSData *)Image_TransForm_Data:(UIImage *)image { NSData *imageData = UIImageJPEGRe ...

  7. 深度学习原理与框架-Tensorflow基本操作-mnist数据集的逻辑回归 1.tf.matmul(点乘操作) 2.tf.equal(对应位置是否相等) 3.tf.cast(将布尔类型转换为数值类型) 4.tf.argmax(返回最大值的索引) 5.tf.nn.softmax(计算softmax概率值) 6.tf.train.GradientDescentOptimizer(损失值梯度下降器)

    1. tf.matmul(X, w) # 进行点乘操作 参数说明:X,w都表示输入的数据, 2.tf.equal(x, y) # 比较两个数据对应位置的数是否相等,返回值为True,或者False 参 ...

  8. OpenCV视频读取播放,视频转换为图片

    转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::Vide ...

  9. C#程序中将图片转换为二进制字符串,并将二进制字符串转换为图片

    /// <summary> /// 将图片以二进制流 /// </summary> /// <param name="path"></pa ...

随机推荐

  1. com.alibaba.fastjson.JSONPathException: expect '], but 'y'

    今天遇到这样的一个错误 网上查找了各种资料,终于找到了报错的原因: String dataType = (String) JSONPath.eval(dataset.getSchema(), &quo ...

  2. HDOJ 1874 畅通project续

    畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. 玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo

    GLSurfaceView是OpenGL中的一个类,也是能够预览Camera的,并且在预览Camera上有其独到之处. 独到之处在哪?当使用Surfaceview无能为力.痛不欲生时就仅仅有使用GLS ...

  4. 站点搭建从零開始(二)server空间

    前面介绍了域名相关知识.这里介绍server,也经常被叫做空间.也就是站点数据实际保存的地方. 1.整体介绍 依据国家相关规定,国内server空间须要进行备案.也就是到相关的机构进行登记.详细方法能 ...

  5. Codeforces 987A. Infinity Gauntlet(手速题,map存一下输出即可)

    解法: 1.先将对应的字符串存入map. 2.然后将输入的串的second置为空. 3.输出6-n,输出map中的非空串. 代码: #include <bits/stdc++.h> usi ...

  6. 「JavaSE 重新出发」02. 数据类型与运算符

    「TOC」 Java 程序基本要求 Java 数据类型 基本数据类型 复合数据类型 运算符 逻辑运算符 位运算符 运算符优先级 Java 程序基本要求 public class : 一个 Java 文 ...

  7. ActiveMQ学习笔记(13)----Destination高级特性(一)

    1. Wildcards 1. Wildcards用来支持名字分层体系,它不是JMS规范的一部分,是ActiveMQ的扩展. ActiveMQ支持一下三种wildcards: 1. ".&q ...

  8. express + multer 文件上传入门

    写在前面的 在web开发中,我们经常会遇到图片上传的功能,接下来我们就在express4.15.0框架中利用multer1.3.0模块来实现图片上传 开始敲代码 首先利用express-generat ...

  9. Mybatis中<resultMap>用法(主要用于一对多去重)

    一.创建部门表和员工表: 创建部门信息表`t_department`,其中包括`id`, `name` CREATE TABLE t_department (         id INT AUTO_ ...

  10. 洛谷P3567 [POI2014]KUR-Couriers 主席树

    挺裸的,没啥可讲的. 不带修改的主席树裸题 Code: #include<cstdio> #include<algorithm> using namespace std; co ...