Сюжет Matplotlib в новой теме - PullRequest
0 голосов
/ 12 сентября 2018

Я разрабатываю приложение для камеры в режиме реального времени, где для черчения требуется новая нить.Для этого создается класс потока:

# Create new thread for plotting smoothly
class PlotThread(threading.Thread):

    def __init__(self, threadID, fig, ax):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.fig = fig
        self.ax = ax
        self.h = None
        self.h_raw = None
        self.hr_est = None

    def update_data(self, h, h_raw, hr_est):
        self.h = h
        self.h_raw = h_raw
        self.hr_est = hr_est

    def run(self):
        self.ax[0].clear()
        self.ax[0].plot(self.h)
        self.ax[0].set_title("Filtered signal")
        self.ax[0].text(150, .002, '%s bpm' % int(self.hr_est), fontsize=18)
        self.ax[0].set_ylim((-0.003, 0.003))

        self.ax[1].clear()
        self.ax[1].plot(self.h_raw)
        self.ax[1].set_title("Raw signal")

        plt.pause(0.0000000000001)

И основная программа выглядит так:

fig, ax = plt.subplots(2, 1, figsize=(14, 8))
plt_thread = PlotThread(1, fig, ax)

grabResult = camera.RetrieveResult()
while camera.IsGrabbing():
    if grabResult.GrabSucceeded():
        # Access the image data
        image = converter.Convert(grabResult)
        frame = image.GetArray()

        h, h_raw, hr_est = core.signal_combination(image)

        plt_thread.update_data(h, h_raw, hr_est)
        plt_thread.start()

В этом случае трудоемкий график не завершает программу, и камера можетначать захват следующего кадра - в результате стабильная частота кадров.

Я получаю следующее сообщение об ошибке:

QObject::setParent: Cannot set parent, new parent is in a different thread
QObject::setParent: Cannot set parent, new parent is in a different thread
...