Python Dash вызывает функции matplotlib - PullRequest
0 голосов
/ 27 сентября 2019

Dash - отличный пакет Python для интерактивной визуализации.Я чувствую, что с этой библиотекой замечательно, что когда дело доходит до анализа структурных данных, но когда дело доходит до неструктурированных данных, таких как изображения и видео, это не так здорово.

В качестве временного решения, если при работе с Dash необходимо показывать изображения, я использую библиотеку matplotlib.Я показываю следующий пример, чтобы прояснить мою точку зрения:

      @app.callback([Output("id_badframe_video", "children")],
                      [Input("id_generate_badframe_video_button","n_clicks")],
                      [State("id_dataset_name_list","value"),
                       State('id_video_name_list','value'),
State('id_video_index_list', 'value'])
        def generate_bad_video(nclick, dataset_name, video_name, frame_index):
            if nclick:
            img = read_image(dataset_name, video_name, frame_index)
            import matplotlib.pyplot as plt
            plt.close()
            fig, ax = plt.subplots(1) 
            ax.imshow(img, cmap='gray')

В приведенном выше коде я хочу продемонстрировать изображение на основе введенных пользователем данных: имя набора данных, имя видео и индекс видео.Затем, когда я нажимаю кнопку Show Image, изображение будет отображаться в отдельном окне (не в пределах http://127.0.0.1:8050/).. Сначала я думал, что это отличная идея, но потом обнаружил, что после показа нескольких изображений программасбой со следующими сообщениями об ошибках:

Error on request:
Traceback (most recent call last):
  File "/home/lib/python2.7/site-packages/werkzeug/serving.py", line 303, in run_wsgi
    execute(self.server.app)
  File "/home/lib/python2.7/site-packages/werkzeug/serving.py", line 294, in execute
    write(data)
  File "/home/lib/python2.7/site-packages/werkzeug/serving.py", line 257, in write
    self.send_header(key, value)
  File "/home/lib/python2.7/BaseHTTPServer.py", line 412, in send_header
    self.wfile.write("%s: %s\r\n" % (keyword, value))
IOError: [Errno 32] Broken pipe
Tcl_AsyncDelete: cannot find async handler

Есть идеи, как решить эту проблему? Спасибо.

...