我对使用python进行图像处理感到好奇,所以我找到了这个很棒的库imageio, 我试图操纵图片的像素并将它们保存在一个新文件中, 但我对循环有一些问题 这就是代码的样子 enter image description here 这就是我得到的错误! IndexError:索引3507超出了轴0的大小为3507的范围 代码:
# -*- coding: iso-8859-1 -*-
import imageio
import numpy as np
im = imageio.imread("JAFFRE009a.png")
taille=im.shape #taille is a tuple (Width,Height)
print taille # (4961,3507)
matrice_pixels=open("matrice.txt",'w')
for i in range(taille[1]):
line=""
for j in range(taille[0]):
line+=repr(im[i][j])
matrice_pixels.write(line+'\n')
matrice_pixels.close()
答案 0 :(得分:1)
因为你的图像没有方形,所以在你完成循环之前重新塑造它
答案 1 :(得分:0)
编辑
我们可以遍历每一行/列的位置并保存到文件中,如下所示。根据文件大小,这将花费很长时间。
您可能希望利用内置二进制保存(效率更高)而不是编写自己的函数
np.save('matrix.py', np_array)
您可以将此文件作为np数组加载并操作
或使用np.save
作为文本文件[将需要更长时间]
np.save('matrix.txt', np_array)
工作代码:
import imageio
import numpy as np
im = imageio.imread("9v9zU.png")
matrice_pixels=open("matric.txt","wb")
nx,ny = im.shape
for i in range(nx):
line=""
for j in range(ny):
line+=repr(im[i][j])
matrice_pixels.write(line+'\n')
matrice_pixels.close()
#Save as Binary data
np.save('matrix1.npy', im)
#Save as Human readable data
np.savetxt('matrix1.txt', im)
或者,您可能希望查看将要执行您要执行的操作的现成库。
对于例如这个SO link讨论了如何使用PIL
库根据颜色删除图片的部分。
此外,将来请不要张贴您的代码图片。复制/ pase到SO窗口,以便我们可以复制和修改。在这种情况下,我已经逐行写下所有内容进行测试(谢天谢地,代码不长)。