Python错误:索引超出范围

时间:2017-03-29 17:22:36

标签: python image-processing python-imageio

我对使用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()

2 个答案:

答案 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窗口,以便我们可以复制和修改。在这种情况下,我已经逐行写下所有内容进行测试(谢天谢地,代码不长)。