python 图像转数组和数组转图像,灰度反转,集中变换等

python图像转数组

#-*- coding: utf-8 -*-

# 导入包
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from PIL import Image

#读取图片,并转为数组
im = np.array(Image.open("../../images/0.png").convert('L'))

# 打印数组
print(im)

python图像转数组后输出如下:

[[255 255 255 … 255 255 255]
[255 255 255 … 255 255 255]
[255 255 255 … 255 255 255]

[255 255 255 … 255 255 255]
[255 255 255 … 255 255 255]
[255 255 255 … 255 255 255]]

python数组转图像

#-*- coding: utf-8 -*-

# 导入包
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from PIL import Image

#读取图片,并转为数组
im = np.array(Image.open("../../images/0.png").convert('L'))

# 打印数组
print(im)

# 隐藏x轴和y轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)

# 显示图片
plt.imshow(im)

# #输出图中的最大和最小像素值
print(int(im.min()),int(im.max()))

# 显示图片
plt.show()

python数据转图像后效果如下:

python数组转图像

python图像灰度

#-*- coding: utf-8 -*-

# 导入包
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from PIL import Image

#读取图片,并转为数组
im = np.array(Image.open("../../images/0.png").convert('L'))

# 隐藏x轴和y轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)

# 灰度显示
plt.gray()

# 显示图片
plt.imshow(im)

# #输出图中的最大和最小像素值
print(int(im.min()),int(im.max()))

# 显示图片
plt.show()

python数组转图像灰度:

python数组转图像
tip:由于图像本身是灰色的,因此转后还是灰色的。

python图像色调反转

#-*- coding: utf-8 -*-

# 导入包
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from PIL import Image

#读取图片,并转为数组
im = np.array(Image.open("../../images/0.png").convert('L'))
im_c = 255 - im

# 隐藏x轴和y轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)

# 灰度显示
plt.gray()

# 显示图片
plt.imshow(im_c)

# #输出图中的最大和最小像素值
print(int(im_c.min()),int(im_c.max()))

# 显示图片
plt.show()

数组转图片后,颜色反转

在这里插入图片描述

数据保存为图片

#-*- coding: utf-8 -*-

# 导入包
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from PIL import Image

#读取图片,并转为数组
im = np.array(Image.open("../../images/0.png").convert('L'))
im_c = 255 - im

# 隐藏x轴和y轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)

# 灰度显示
plt.gray()

# 显示图片
plt.imshow(im_c)

# #输出图中的最大和最小像素值
print(int(im_c.min()),int(im_c.max()))

# plt.savefig('../../images/0_c.png', bbox_inches='tight')

# 显示图片
plt.show()

tips:此方式对于一般的数据处理性能完全达标,当图片数据量达到上千万甚至上亿时,可能存在性能问题,需要使用其他方式解决。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐