0

我对使用 python 进行图像处理感到好奇,所以我发现了这个很棒的库 imageio,我试图操纵图片​​的像素并将它们保存在一个新文件中,但是我在循环中遇到了一些问题,这就是代码的样子 enter图片描述在这里 ,这是我得到的错误!IndexError: index 3507 is out of bounds for axis 0 with size 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()
4

2 回答 2

1

因为您的图像没有方形形状,所以在遍历循环之前对其进行整形

于 2017-03-29T17:29:14.447 回答
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 链接PIL讨论了如何使用库根据其颜色删除图片的一部分。

另外,将来,请不要发布您的代码图片。复制/粘贴到 SO 窗口,以便我们可以复制和修改。在这种情况下,我已经逐行写下所有内容以进行测试(幸好代码没有那么长)。

于 2017-03-29T18:18:13.380 回答