向左向右向后转python_在python中将图像(png和jpg)转换为多维列表并向后转换

让我们从一个已知的示例图像开始。这里有一个小的3x2实际工作和一个更大的,你可以看到它:

小:

00f2fe3c602aa05c1ef19cd17ca8dab2.png

大:

886437a4707c2a77215dd34739ee0161.png

您可以打开一个图像并将其变成一个高效、快速的numpy多维数组,如下所示:#!/usr/local/bin/python3

import numpy as np

from PIL import Image

# Open image from disk

im = Image.open('image.png')

na = np.array(im)

看起来像这样:

^{pr2}$

并将其转换回一个PIL图像并保存如下(只需将此代码附加到上面的代码中):# Convert array back to Image

resultim = Image.fromarray(na)

resultim.save('result.png')

一些注释:

注1

如果你想要一个RGB888图像,并且你正在打开一个PNG图像,你可能会得到一个没有每个像素的RGB值的调色板图像,而是每个像素都有一个调色板索引,一切都会出错!在

例如,下面是与上面相同的图像,但当生成应用程序将其保存为调色板图像时:array([[0, 1, 2],

[3, 4, 5]], dtype=uint8)

从im.getpalette()返回的内容:[255,

0,

0,

0,

255,

0,

0,

0,

255,

0,

0,

0,

255,

255,

255,

126,

126,

126,

...

...

所以,这个故事的寓意是。。。如果需要RGB888图像,请使用:Image.open('image.png').convert('RGB')

注2

同样,如果您打开一个包含透明度的PNG文件,它将有4个通道,最后一个通道是alpha/transparency,如果您想放弃alpha通道,应该调用convert('RGB')。在

注3

如果不需要中间图像,可以将加载和保存简化为单行:# Load and make array in one go

na = np.array(Image.open('image.png').convert('RGB'))

# Convert back to PIL Image and save in one go

Image.fromarray(na).save('result.png')

关键词:图像,图像处理,numpy,array,ndarray,PIL,pill,Python3,palete,PNG,JPG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值