Возврат события.xdata из функции - PullRequest
0 голосов
/ 08 октября 2019

Я сделал небольшой графический интерфейс для выбора точек на заданном изображении, построения точек, их интерполяции и сохранения. Я хотел бы сделать так, чтобы интерполированные точки давались как выходные данные функции gui_pos (image) retrun, но я не мог найти способ сделать это. До сих пор я исправил сохранение интерполированной точки в файле .pckl, но это не очень хорошее решение. Код следующий:

from PIL import Image
import numpy as np
import pickle
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

def interp_mia(x,y,xx):
    f= interp1d(x,y,fill_value="extrapolate")
    yy= f(xx)
    return yy

def onclick(event):

    plt.plot(event.xdata, event.ydata, '.')
    fig.canvas.draw()
    coordsx.append(event.xdata)
    coordsy.append(event.ydata)

    if (event.button == 3) :
        xx =  np.arange(np.min(coordsx),np.max(coordsx))
        yy = interp_mia(coordsx, coordsy, xx)
        print('you pressed', event.button)
        plt.plot(xx,yy,'k-')
        fig.canvas.draw()                                
        fig.canvas.mpl_disconnect(cid)
        dum = np.array((xx,yy))
        f = open('gui_pos.pckl', 'wb')
        pickle.dump(dum, f)
        f.close()

def gui_pos(image):

    global coordsx
    global coordsy
    global fig
    global cid
    global xx
    global yy
    global slit
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.imshow(image, origin="lower")
    coordsx = []
    coordsy = []
    cid = fig.canvas.mpl_connect('button_press_event', onclick)    
    return 

Есть идеи? Спасибо,Qarolina

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...