在学习TensorFlow框架时,提到用MNIST手写数字数据库进行练习,为了更直观看下里面的数据到底长啥样,用OpenCV(cv2)中的imshow函数来进行显示。
默认已经安装: numpy、tensorflow、cv2
1--首先是根据Tensorflow官网的方法获得数据库:
1 from tensorflow.examples.tutorials.mnist import input_data 2 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
现在mnist对象已经拥有MNIST数据库的训练集和测试集。
2--进行单张显示比较容易,如下代码:
1 import cv2 2 # display one database image 3 im = mnist.test.images[0].reshape(28, 28) 4 cv2.imshow("demo", im) 5 cv2.waitKey(0) 6 cv2.destroyAllWindows()
显示结果为:
3--单张显示太单调(图像大小28x28),可以尝试多张网格排列显示。
- 起先考虑从数据库中取出100张,然后根据取出顺序确定在哪行哪列,最后合成大图,但根据顺序直接确定该图像位置有点困难
- 换个思路:先确定网格位置,再从数据库中选取一张插入,似乎简单了许多
代码如下:
import cv2 import numpy as np #per row 10 patches, per col 10 patches BigIm = np.zeros((280, 280)) index = 0 for i in range(10): for j in range(10): temp = mnist.train.images[index].reshape(28, 28) BigIm[28*i:28*(i+1), 28*j:28*(j+1)] = temp index += 1 cv2.imshow("demo", BigIm) cv2.waitKey(0)
结果如下:
看了数据库的样子,接下来可以愉快地进行深度学习了~