[英]Why am I getting a index error for my loop in python?
我正在尝试将原始图像划分为 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
,但它仍然不起作用。
new0
的大小是heightimage0R
x widthimage0R
(我现在将其称为h
x w
),我假设它的大小与image0R
相同(否则你会遇到更多问题)。
您的代码正在做的是从image0R
中取出一个 8x8 正方形并将其展平到新数组中。
出现问题是因为new0
是一个h
x w
-矩阵,但您将它用作h*w
x 64
-矩阵。 这是因为行的值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
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
之后,它一定是抛出错误。
你能更具体地说明你想要实现的目标吗? 看起来逻辑需要改变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.