Вы уже выполнили тяжелую работу, поэтому вам просто нужна простая функция, подобная следующей:
def change_color(center):
step = step_size/2
center_x, center_y = center
canvas.create_rectangle(
[
center_x - step,
center_y - step,
center_x + step,
center_y + step
],
fill='red'
)
Вместо того, чтобы печатать центроид, вы просто вызовете эту функцию в этот момент.
Джон показал в своем полном коде (удален при редактировании), что холст уже настроен для рисования сетки.Чтобы настроить холст, Джон сделал:
filename = ImageTk.PhotoImage(img)
canvas = tk.Canvas(root,height=img.size[0],width=img.size[0])
canvas.image = filename
canvas.create_image(0,0,anchor='nw',image=filename)
canvas.pack()
Также у него есть step_size как:
step_size = int(img.width / step_count)
Если изображение не квадратное, вам понадобятся step_size_x
и step_size_y