IndexError: index 7 is out of bounds for axis 0 with size 7
У меня ошибка при заполнении массива colors. В этой строчке: colors[j, 4 * i] = r и наверное в следующих 3-ех строчках тоже. Эта часть кода выдает следующую ошибку: IndexError: index 7 is out of bounds for axis 0 with size 7. Можете помочь с этой ошибкой, пожалуйста :)
import numpy as np
from PIL import Image
stick_pos = (640, 154)
pos_of_sticks = np.zeros((7, 8))
num_of_iter = 0
img = Image.open('Screenshot_3.png')
listss = []
colors = np.zeros((7, 16))
num = 0
i = 0
j = 0
for i in range(0, 7):
for j in range(0, 8):
y = stick_pos[1] - i * 2
x = stick_pos[0] - j * 3
num_of_iter += 1
if num_of_iter == 1:
pos_of_sticks[i, j] = x
if num_of_iter == 2:
pos_of_sticks[i, j] = y
num_of_iter = 0
print(pos_of_sticks)
for l in np.nditer(pos_of_sticks):
listss.append(l)
num += 1
if num == 2:
r, g, b, a = img.getpixel(tuple(listss))
colors[j, 4 * i] = r
colors[j, 4 * i + 1] = g
colors[j, 4 * i + 2] = b
colors[j, 4 * i + 3] = a
j += 1
i += 1
if i == 3:
i = 0
num = 0
print(colors)
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Честно не понял зачем для всего использовать numpy массивы.
К тому же, у меня ваша программа ругается на вот эту конструкцию img.getpixel(tuple(listss)), что логично, т.к. там получается кортеж numpy массивов.
Посему я бы сделал так:
sx, sy = stick_pos = (640, 154)
pos_of_sticks = [(sx - x * 6, sy - y * 2) for y in range(7) for x in range(4)]
print(pos_of_sticks)
img = Image.open('Screenshot_3.png')
colors = np.array(list(map(img.getpixel, pos_of_sticks))).reshape((7, 4*4))