gpt4 book ai didi

python - 如何将分为 6 个部分列表的 numpy 数组转换为精确的 6 x 6 像素图像?

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:12 28 4
gpt4 key购买 nike

我已经尝试了一切,tkinter、turtle、PIL、matplotlib。我想转换这个:

[[[255   0   0 255] (contains RGBA values)
[255 0 0 255]
[255 0 0 255]
[255 127 39 255]
[255 127 39 255]
[255 127 39 255]]

[[255 0 0 255]
[255 0 0 255]
[255 0 0 255]
[255 127 39 255]
[255 127 39 255]
[255 127 39 255]]

[[255 0 0 255]
[255 0 0 255]
[255 0 0 255]
[255 127 39 255]
[255 127 39 255]
[255 127 39 255]]

[[ 34 177 76 255]
[ 34 177 76 255]
[ 34 177 76 255]
[ 0 162 232 255]
[ 0 162 232 255]
[ 0 162 232 255]]

[[ 34 177 76 255]
[ 34 177 76 255]
[ 34 177 76 255]
[ 0 162 232 255]
[ 0 162 232 255]
[ 0 162 232 255]]

[[ 34 177 76 255]
[ 34 177 76 255]
[ 34 177 76 255]
[ 0 162 232 255]
[ 0 162 232 255]
[ 0 162 232 255]]]

我尝试过的代码:

plt.axis('off')
plt.imshow(outputPixels, aspect = 'auto')
plt.show()

Image.fromarray(outputPixels, mode='RGB')

(I would show you Tkinter, but I deleted it)
(Just think a for loop adding and gridding a canvas the size of a pixel)
into a 6 by 6 image.

一开始我用的是PIL imsave,但是不准确。然后是matplotlib,但我无法改变大小。我什至使用了 tkinter Canvas (每个 Canvas 代表一个像素),但一切都是黑色的。

MatPlotLib Output

PIL inacurrate image

最佳答案

你的数组形状很好,你只需要使用 pyplot.imshow 方法,它采用形状数组 (n,m,4) 并绘制图像

以下代码有效

import matplotlib.pyplot as plt


arr = [[[255, 0, 0, 255,],
[255, 0, 0, 255,],
[255, 0, 0, 255,],
[255, 127, 39, 255,],
[255, 127, 39, 255,],
[255, 127, 39, 255,],],

[[255, 0, 0, 255,],
[255, 0, 0, 255,],
[255, 0, 0, 255,],
[255, 127, 39, 255,],
[255, 127, 39, 255,],
[255, 127, 39, 255,],],

[[255, 0, 0, 255,],
[255, 0, 0, 255,],
[255, 0, 0, 255,],
[255, 127, 39, 255,],
[255, 127, 39, 255,],
[255, 127, 39, 255,],],

[[ 34, 177, 76, 255,],
[ 34, 177, 76, 255,],
[ 34, 177, 76, 255,],
[ 0, 162, 232, 255,],
[ 0, 162, 232, 255,],
[ 0, 162, 232, 255,],],

[[ 34, 177, 76, 255,],
[ 34, 177, 76, 255,],
[ 34, 177, 76, 255,],
[ 0, 162, 232, 255,],
[ 0, 162, 232, 255,],
[ 0, 162, 232, 255,],],

[[ 34, 177, 76, 255,],
[ 34, 177, 76, 255,],
[ 34, 177, 76, 255,],
[ 0, 162, 232, 255,],
[ 0, 162, 232, 255,],
[ 0, 162, 232, 255,],]]


plt.imshow(arr)

您获得的图像是 6X6,但您的图像前 3 个像素具有相同的颜色,因此您会看到它分为 4 个部分。您可以通过仅绘制图像的一部分来验证它

plt.imshow(arr[:3])

plt.imshow(arr[-3:])

关于python - 如何将分为 6 个部分列表的 numpy 数组转换为精确的 6 x 6 像素图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949768/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com