Не могу заставить дисплей MatPlotLib работать в середине - PullRequest
0 голосов
/ 16 февраля 2019

Я пишу программу для ввода данных в базу данных JSON.Частично это:

  • отображение изображения (имя файла введено пользователем)
  • с запросом координат интереса (введено пользователем)
  • повторное отображение обрезанногоизображение с использованием этих координат
  • с запросом тегов для этого обрезанного сегмента (введено пользователем)
  • сохранение тегов и координат в базе данных JSON

Этот же процесс был использовандля текстовых файлов, но теперь, когда я делаю изображения, у меня возникает проблема, когда моя программа вызывает функцию:

img = mpimg.imread("raw_data" + system_slash + "images" + system_slash + database[i]['image_file']) 
plot.imshow(img)

не отображает изображение сразу, а только после завершения всей программы.Может ли кто-нибудь предложить другой вызов, чтобы он отображался в строке, например, функция печати для текста?

* системная косая черта - это быстрое и грязное исправление для меня и моего коллеги, использующих как файловые системы ПК, так и MAC при использовании программы, поэтому либо / или \

1 Ответ

0 голосов
/ 17 февраля 2019

После команды печати вы должны поставить matplotlib.pyplot.pause(t), где t - время, которое вы хотите приостановить.Интервал t указан в секундах, поэтому, если вы хотите, например, анимацию со скоростью примерно 60 кадров в секунду, вы можете установить t=1/60.

Функция обновляет фигуру и отображает ее в течение t секунд.

РЕДАКТИРОВАТЬ Что мне также пришло в голову: не звоните plt.imshow повторно.Это очень медленно.Лучше позвоните один раз, а затем просто установите данные.Маленькая демка:

import matplotlib.pyplot as plt
import numpy as np

im = plt.imshow(np.random.rand(10,10))

while True:
    im.set_data(np.random.rand(10,10))
    plt.pause(1/10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...