需求:将信息按像素存储在图片里,再完整地读出来(矩阵、图片互转)
代码:
# 随机生成一个3*3的矩阵,保存到图片里
data = np.random.randint(1, 255, (3, 3, 3), dtype='uint8')
print("image1: ",data)
im = Image.fromarray(data)
im.save("picture1.jpg")
# 再读出来
im = Image.open("picture1.jpg")
data = np.array(im)
print("image2: ",data)
# 为了直观对比,再写入新图片
im = Image.fromarray(data)
im.save("picture2.jpg")
结果:
两次print的矩阵天差地别!
两次的图片仔细看能发现差别
其他尝试:
将上述第一行代码换成:
data = np.full((3,3,3),255,dtype='uint8') data2 = np.zeros((3,3,3),dtype='uint8') data = np.concatenate((data,data2),axis = 1)
结果如下:
读取的值不准确将上述读取图片代码换成:
im = Image.open("picture1.jpg").convert('RGB') for i in range (0,3): for j in range (0,3): print(im.getpixel((i, j)))
同样不行
将上述读取图片代码换成:
im = cv2.cvtColor(np.array(im),cv2.COLOR_RGB2BGR)
同样不行,结果跟直接np.array()一样,说明可能问题就出在np.array()上