如何更改网格单个正方形的颜色。此网格绘制在图像上。我计算了网格每个正方形的中心点。当用户单击网格的特定正方形时,我会得到该正方形的质心(已实现(。如何更改网格正方形的颜色。我在变量"closest_centroid"中有点击正方形的质心。
# Get closes centroid
def closest_node(node, nodes):
nodes = np.asarray(nodes)
dist = np.sum((nodes - node)**2, axis=1)
return np.argmin(dist)
# print co-ordinate function
def get_coords(event):
mouse_xy = (event.x, event.y)
closest_centroid = centers[closest_node(mouse_xy, centers)]
print(closest_centroid)
我的想法是更改网格的单击正方形中包含的图像像素的颜色。
我的库是:
import math
from Tkinter import *
from PIL import Image, ImageDraw
import numpy as np
您已经完成了艰苦的工作,因此您只需要一个简单的函数,如下所示:
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'
)
此时只需调用此函数,而不是打印质心。
John 在他的完整代码(在编辑中删除(中展示了画布已经设置为绘制网格。为了设置画布,约翰做到了:
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