【发布时间】:2020-04-03 07:49:46
【问题描述】:
使用 PIL 在画布中的图像上绘制矩形时。我希望根据画布中图像的像素颜色更改填充矩形。
我参考了其中一个交叉帖子(链接粘贴在下面)在 Tkinter 中创建带有鼠标事件的矩形。
create_rectangle 用鼠标事件指定的颜色填充矩形(例如:在本例中矩形用黑色填充)。有没有办法根据背景图像的现有像素颜色在逻辑上更改填充颜色?我的意思是,在绘制矩形时,我只需要将背景图像的白色像素变为红色,其余的变为不同的颜色。
Drawing rectangle using mouse events in Tkinter
[1]: https://i.stack.imgur.com/W41kX.jpg
def rec_on_button_press(self,event):
self.start_x = event.x
self.start_y = event.y
self.rect=self.image_canvas.create_rectangle(self.x, self.y, 1, 1,fill=self.python_red)
def rec_on_move(self, event):
curX, curY = (event.x, event.y)
imagenp= np.array(image)
if imagenp[curY,curX]==255:
self.python_red="#EE204D"
else:
self.python_red=None
self.image_canvas.coords(self.rect, self.start_x, self.start_y, curX, curY)
def rec_on_button_release(self, event):
pass
【问题讨论】:
-
听起来不太容易。你尝试了什么?
-
我已经使用 numpy 将图像更改为数组并开始读取鼠标事件的每个像素。这个 if 语句实际上选择了初始鼠标位置并更改了填充颜色,但没有在鼠标拖动时读取所有像素?
-
不太清楚你想做什么。你想制作一个选择框吗?如果没有,您能否使用 GIMP/Paint 等模拟图像
-
你能用矩形内区域的预期输出创建一个图像吗?
-
我认为你的想法不正确。根据你的想法(来自你的代码)。它最终会生成一个白色或红色填充的矩形,这取决于你按下的像素。跨度>
标签: python tkinter python-imaging-library drawrectangle