【问题标题】:Why am I getting a index error for my loop in python?为什么我在 python 中的循环出现索引错误?
【发布时间】:2021-05-22 01:52:24
【问题描述】:

我正在尝试将原始图像划分为 8x8 重叠块,以便稍后进行特征提取。

这是我的代码:

new0 = np.zeros((heightimage0R, widthimage0R), np.uint8)
k = 0
for i in range(heightimage0R):
    for j in range(widthimage0R):
        crop_tmp0R = image0R[i:i+8,j:j+8]
        new0[k, 0:64] = crop_tmp0R.flatten()
        k = k + 1

但是,当我运行我的代码时,我会收到以下错误:

Traceback (most recent call last):

  File "<ipython-input-392-cf9c59842d3a>", line 6, in <module>
    new0[k, 0:64] = crop_tmp0R.flatten()

IndexError: index 256 is out of bounds for axis 0 with size 256

我已经在 for 循环中尝试了widthimage0R-1,但它仍然不起作用。

【问题讨论】:

  • widthimage0R 可能是 1 太大,在 for 循环中尝试 widthimage0R - 1
  • 我也试过了,可惜没用!
  • 8 X 8 overlapping blocks -> 这是什么意思?你能具体指定多少重叠/确切的大小(以像素数或相对于图像大小)
  • i+8 最多为heightimage0R + 8,超出heightimage0R 大小数组的范围。您可能只想迭代for i in range(heightimage0R-8):j 也是如此。

标签: python numpy for-loop feature-extraction


【解决方案1】:

new0 的大小为heightimage0Rxwidthimage0R(我现在将其称为hxw),我假设它的大小与image0R 相同(否则你有更多问题)。

您的代码正在做的是从 image0R 中取出一个 8x8 正方形并将其展平到新数组中。

出现问题是因为new0hxw-矩阵,但您将其用作h*wx64-矩阵。这是因为行的值k,介于0 到h*w 之间,而列总是64。

我的猜测是您的意思是执行以下操作:

new0 = np.zeros((heightimage0R*widthimage0R, 64), np.uint8)
k = 0
for i in range(heightimage0R-8):  # Don't forget the -8 to not exceed the size of the image0R as well!
    for j in range(widthimage0R-8):
        crop_tmp0R = image0R[i:i+8,j:j+8]
        new0[k, 0:64] = crop_tmp0R.flatten()
        k = k + 1

【讨论】:

    【解决方案2】:
    new0 = np.zeros((heightimage0R, widthimage0R), np.uint8)
    

    这里,new0 的形状为 heightimage0R x widthimage0R

    for i in range(heightimage0R):
        for j in range(widthimage0R):
            crop_tmp0R = image0R[i:i+8,j:j+8]
            new0[k, 0:64] = crop_tmp0R.flatten()
    

    在这里,我们尝试访问new0 的第 k 行,其中 k 上升到 (heightimage0R x widthimage0R)。所以k越过heightimage0R之后,肯定是抛出错误了。

    您能否更具体地说明您想要实现的目标?看来逻辑需要改一下。

    【讨论】:

    • 我正在尝试编写代码将图像划分为 8x8 像素的滑动块,然后将它们转换为大小为 64 的向量。我相信“步长”应该只有 1。在向量之后已创建我想为所有带有 0 的向量分配一个标签。
    猜你喜欢
    • 2016-04-23
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多