Я пытаюсь установить значение ряда строк в одном столбце в массиве, представляющем двоичное изображение.
По сути, я пытаюсь выполнить расширение изображения и хотел бы установитьзначение нескольких строк в одном столбце, равное 1, на основе расположения пикселя в моем базовом изображении, которое уже равно 1. Соответствующий код приведен ниже.
for j in critspace_c:
for i in critspace_r:
if image[i][j] == 0:
pass
elif image[i][j] == 255:
for k in range(1, criterion+1):
img_dilated[range(i-k, i+k+1)][j] = 255
По сути, я хочупоследняя строка интерпретируется как: «для строк 2k + 1 с центром в строке i в столбце j установите их значение равным 255».
Я получаю следующую ошибку:
img_dilated[range(i-k, i+k+1)][j] = 255
IndexError: index 37 is out of bounds for axis 0 with size 3"
Я понимаю, почему это происходит;код интерпретирует j (который равен 37, поскольку соответствующие пиксели находятся в столбце 37) как индекс предыдущего набора индексов, который имеет менее 37 значений. Однако я бы хотел, чтобы программа интерпретировала j как индекс столбца матрицы img_dilated. Есть ли способ «пропустить» [] непосредственно после имени матрицы, чтобы [j] применялся к матрице, а не к скобкам?
Заранее всем спасибо!
Редактировать на случай, если кто-нибудь столкнется с этим в будущем:
Я нашел решение. Поскольку изображение представлено в виде массива, вы можете индексировать его, используя координаты через запятую. Я рассматривал изображение как список списков, а это не так. Последняя строка моего кода должна выглядеть следующим образом:
img_dilated[range(i-k, i+k+1), j] = 255
Надеюсь, это поможет!