问题一:我图片读入是tensor类型的,但是我要变成nadrry类型或者用im.show显示(im.show显示所用到的就是nadrry类型)
for image, label, filename in loader: sess = tf.Session() sess.run(tf.global_variables_initializer()) img = np.transpose(image, (0, 2, 3, 1)) img_numpy = img.numpy()[0] plt.imshow(img_numpy) # 显示图片 # plt.axis('off') # 不显示坐标轴 plt.show() b = img_numpy.shape print(filename) print(b)
首先,在神经网络中,图像被表示成[c, h, w]
格式或者[n, c, h, w]
格式。
im.show显示的shape为[n,h,w,c],而我们直接读取文件格式是[n,c,h,w],为了转成[n,h,w,c]形式,我采用
img = np.transpose(image, (0, 2, 3, 1))
问题二:[n,h,w,c]为啥im.show显示不出来
im.show显示的图片格式为[h,w,c],没有通道n,所以我将n通道去除:img_numpy = img.numpy()[0],这时显示的是彩色
问题三:要显示灰度图片。
这就简单了,直接在tensor的基础上img_numpy = image.numpy()[0][0],
将[n,c,h,w]的n,c去除就显示[h,w]的灰度图了