Измените значения массива numpy, указав угловые индексы

#python #numpy #image-manipulation #matrix-indexing

#python #numpy #манипулирование изображениями #матрица-индексирование

Вопрос:

я пытаюсь изменить определенные значения матрицы 2D-массива numpy. Мне это нужно для классификации областей изображения на уровне пикселей.

Представьте, что у вас есть матрица, подобная:

 a = [ [1,  2,  3,  4 ]
      [5,  6,  7,  8 ] 
      [9,  10, 11, 12]
      [13, 14, 15, 16] ].
 

Я хочу изменить значения, «нарисовав» линию. Например, я провел строку через значения 5, 11 и 16.
Я бы хотел изменить значения под этой строкой на 0. Итак, имея:

 a = [ [1,  2,  3,  4 ]
      [5,  6,  7,  8 ] 
      [0,  0, 11,  12]
      [0,  0,  0,  16] ].
 

Регулярно с помощью полосчатых матриц и диагональных функций легко изменять значения матрицы. Но как поступить с неправильными геометрическими пожеланиями?
Другой вариант использования — иметь геометрическую фигуру или подробно угловые точки геометрической фигуры.
Есть ли способ указать четыре угловые точки для создания блока?

Например, corner_points = [ [1,1], [3,1], [1,2], [4,3] ] что приведет к:

 a = [ [0,  0,  3,  4 ]
      [0,  0,  0,  8 ] 
      [0,  0,  0,  12]
      [13, 14,  0, 16] ]
 

Мне не нужно, чтобы он был абсолютно точным, грубое приближение действительно полезно!

Заранее спасибо, и если я не смог правильно объяснить, пожалуйста, задавайте вопросы, чтобы я мог выполнить эту задачу.