【问题标题】:Python error : index out of boundsPython错误:索引超出范围
【发布时间】:2017-03-30 22:22:56
【问题描述】:

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

【问题讨论】:

  • 这是一个很常见的错误,或者人们一直在问这个问题。您能否告诉我们您阅读了哪些关于它的 stackoverflow 问题,并解释为什么这些答案不能帮助您解决问题?
  • Alteast 尝试打印图像的尺寸并查看其文档

标签: python image-processing python-imageio


【解决方案1】:

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

【讨论】:

  • taille[0] 中的元素与 taille[1] 中的元素相匹配,但一旦 i + 1 >= len(j) 代码停止工作。
  • 另外,当您打印 taille 时,您应该会看到它
  • 我已经打印了 taille 你可以在打印行旁边看到结果
  • 是的,这就是问题所在,4961,3501,它们的大小不相等
  • 如果我改变图片的尺寸,我会冒很大一部分丢失的风险吗?
【解决方案2】:

编辑

我们可以遍历每一行/列的位置并保存到一个文件中,如下所示。这将需要很长时间,具体取决于文件大小。

您可能希望利用内置的二进制保存(更有效)而不是编写自己的函数

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 库根据图片的颜色删除图片的一部分。

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

【讨论】:

  • 感谢您的回答,很抱歉没有粘贴代码而不是截图,
  • 我尝试了您的解决方案,但仍然遇到问题((np.savetxt("matrix.txt",im[:, :, 0]) IndexError: too many indices for array))跨度>
  • 您能否将您的png 文件发布到您有代码截图的链接中,以便我查看。我的测试png 没有错误。
  • 我编辑了帖子,发布了我正在运行测试的 png 文件!
  • 你的最终目标是什么?如果我保存所有轴,它的保存但文件大小为 450Mb ,这是巨大的。
猜你喜欢
  • 2016-04-17
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
相关资源
最近更新 更多