拿到一个分割数据集,总共7类,里面的图片都是.npy格式,为了查看分割标签的情况,现在要将npy文件转为图片格式。首先这个数据集的标签图的像素值是0~6,单通道灰度图,所以标签如果显示成图片的话应该是类似于全黑(因为像素值太过于接近于0,人眼分不清),但是以上是我自己思考未做实验的结果,当我实际动手时发现不同的保存方式得到的结果不一。现记录如下:
使用OpenCV保存:
import cv2 as cv
import numpy as np
data=np.load("*****.npy")
cv.imshow(‘示例’,data)
cv.waitkey(O)
显示的图片如下:
使用PIL保存:
import numpy as np
from PIL import Image
data=np.load("******.npy")
image=Image.fromarray(data)
image.show()
显示的图片如下:
使用matplotlib保存:
import numpy as np
import matplot.pyplot as plt
data=np.load("*****.npy")
plt.imshows(data)
plt.show()
图片显示如下:
可以看到三种方式显示的图片都不一样,使用PIL和OpenCV方式保存的图片都是灰度图,而使用matplotlib保存的图片居然是彩图!经过查找资料发现,**这主要是由于PIL和opencv使用的不同版本的libjpeg造成的,**而matplotlib显示的是彩色索引图像,是通过调色板索引得到彩图。有博主建议使用PIL处理的图片送入网络训练更容易收敛。