Numpy: найти центр диагонали прямоугольника в двумерном массиве

Есть двумерный массив, в котором есть -1(белый цвет), 128(серый) и 0(черный), найти центр прямоугольника(серым цветом) и заменить его на серый цвет, думаю, что можно взять координату на половине диагонали, как это сделать?

Вот у меня есть картинка моего массива.

введите сюда описание изображения

Вот где-то так я хочу.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: MBo

Правильно - использовать данные о прямоугольнике, ведь он же был как-то нарисован - значит, и координаты имелись.

В этом случае

CenterX = (LeftTopX + RightBottomX) / 2
CenterY = (LeftTopY + RightBottomY) / 2

Если же это всё забыто, то надо искать самую верхнюю левую серую точку, и выполнять обход по серым точкам, опрашивая в первый раз направление вниз, потом против часовой стрелки. Т.е. в первую очередь проверяем направление влево от текущего направления, потом прямо. При повороте засекаем угол, далее используем его координаты.

При наличии нескольких контуров остальные обходим так же (при обходе первого можно запоминать, что точку серую нашли, но пока не задействовали)

→ Ссылка