一文看懂所有图像与numpy矩阵(三维、四维均包含)之间的相互转换

本文介绍了如何使用Python的PIL库将RGB图像转换为灰度并保存,以及如何通过PIL和numpy处理图片到numpy矩阵,并针对多维图像进行逐张提取和格式转换。涵盖了从图像到numpy和numpy回图的基本步骤及特殊处理技巧。
摘要由CSDN通过智能技术生成

图像与numpy矩阵之间的相互转换:

1.RGB–>灰度图:

from PIL import Image
# 加载RGB图片
I = Image.open('/home/timg.jpg')
I.show()
# 转换为灰度图片
L = I.convert('L')
L.show()
L.save('/home/timg2.jpg')

2.图片–>numpy格式:

from PIL import Image
import numpy
# 加载图片
I = Image.open('/home/timg.jpg')
# 转换成numpy矩阵
img = numpy.array(I)
print(img.shape)
print(img)

3.numpy–>图片:
转为rgb的convert里为’RGB‘
转为灰度图的convert里为‘ gray’

from PIL import Image
import numpy
I = Image.open('/home/timg.jpg')
img = numpy.array(I)
# 把numpy矩阵转换成图片
img_np = Image.fromarray(img.astype('uint8')).convert('RGB')
img_np .show()

4.若numpy为四维的情况:
例如(520,256,256,3)表示520张256*256大小的三维图像,则需用循环将每一张图片提取出来再转化

# 保存路径
output_folder = 'output-te_data/'
for idx in range(520):
	#te_dataz为(520,256,256,3)的numpy矩阵
    im=Image.fromarray(np.uint8(te_data[idx])).convert('RGB')
    # 画图
    # plt.imshow(im)
    # plt.show()
    im.save(output_folder + 'sample_results_'+str(idx)+'.png')

5.若为(520,256,256,1)表示520张256*256大小的一维图像(灰度图像),则需用循环将每一张图片提取出来,将最后一维数据去掉,再保存:

# 保存路径
output_folder = 'output-te_mask/'
for idx in range(520):
	# 先将第三维去掉
    np_img = np.squeeze(te_mask[idx], axis=2)
    im=Image.fromarray(np.uint8(te_data[idx]))
    # 画图
    # plt.imshow(im,cmap='gray')
    # plt.show()
    im.save(output_folder + 'sample_results_'+str(idx)+'.png')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值