如何更改网格的单个方格的颜色。该网格绘制在图像上。我计算了网格每个方格的中心点。当用户点击网格的特定方格时,我得到该方格的质心(已经实现)。如何更改网格方块的颜色。我在变量“nearest_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
答案 0 :(得分:2)
你已经完成了艰苦的工作,所以你只需要一个简单的功能,如下所示:
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在他的完整代码(在编辑中删除)中显示画布已经设置为绘制网格。为了设置画布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