从.jpg图像转换回2D numpy数组

我将一个numpy数组保存到图像,如下所示:


plt.imshow(xNext[0,:,:,0]) #xNext has shape (1,64,25,1)

print(xNext[0,:,:,0].shape) #outputs (64,25)

plt.savefig(os.path.join(root,filename)+'.png')

np.save(os.path.join(root,filename)+'.npy',xNext[0,:,:,0])

如何从.png保存的图像中获取相同的numpy数组?如果我另存为.jpg图片,也可以告诉我吗?


我尝试了以下操作,并与3D数组(v1)一起使用,其中生成的图像接近原始numpy数组生成的图像(原始)。


image = Image.open(imageFilename) #brings in as 3D array

box = (315,60,500,540)

image = image.crop(box)

image = image.resize((25,64)) #to correct to desired shape

arr = np.asarray(image)

plt.imshow(arr)

plt.savefig('v1.png')

plt.close()

但是,当我将3D数组转换为2D数组时,生成的图像是不同的(v1b和v1c)。


arr2 = arr[:,:,0]

plt.imshow(arr2)

plt.savefig('v1b.png')

plt.close()

arr3 = np.dot(arr[...,:3],[0.299,0.587,0.11])

plt.imshow(arr3)

plt.savefig('v1c.png')

plt.close()

如何将3D正确转换为2D?谢谢你的帮助。


原始版本v1(从3D阵列保存)

http://img1.mukewang.com/60accfc3000139d601690081.jpg

v1b,v1c(从2D数组保存)

http://img1.mukewang.com/60accfcf0001a0e101680082.jpg

原始尺寸(具有原始尺寸)

http://img2.mukewang.com/60accfd80001b47903300550.jpg


幕布斯6054654
浏览 281回答 2
2回答

慕雪6442864

关联 from scipy.misc import imread  image_data = imread('test.jpg').astype(np.float32)这应该给你numpy数组(我建议使用scipy的imread)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python