我做了一个GUI,我可以在其中加载磁盘中的图像并将鼠标移动(绘制轮廓)转换为坐标。现在我需要将坐标转换为二进制图像,我不知道如何。 这是我的代码:
result = py.module_name.function_name(parameter1);
plt.imsave(' binary.png',a,cmap = cm.gray)
from Tkinter import *
from tkFileDialog import askopenfilename
from PIL import Image, ImageTk
import numpy as np
import cv2
class Browse_image :
def __init__ (self,master) :
frame = Frame(master)
frame.grid(sticky=W+E+N+S)
self.browse = Button(frame, text="Browse", command = lambda: browseim(self))
self.browse.grid(row=13, columnspan=1)
self.photo = PhotoImage(file="browse.png")
self.label = Label(frame, image=self.photo)
self.label.grid(row=1,rowspan=10)
self.label.bind('<B1-Motion>', self.mouseevent)
def mouseevent(self,event):
w=self.photo.width()
h=self.photo.height()
a = np.zeros(shape=(h,w))
#print event.x, event.y
a[event.x,event.y]=1
`
答案 0 :(得分:0)
您的问题是您在每个鼠标事件中使用mouseevent中的行a = np.zeros(shape=(h,w))
创建一个新的空数组。要解决这个问题,您应该在a
中声明__init__
作为属性(即self.a = np.zeros(shape=(h,w))
),以便您可以访问和更新它,而不会在mouseevent
函数中覆盖它。