Как перерисовать только те области изображения, которые изменились с помощью matplotlib - PullRequest
0 голосов
/ 08 июня 2018

У меня есть приложение, в котором изменяется только одна строка изображения с разрешением 1024x2048 пикселей со скоростью 100 раз в секунду.Я хотел бы отображать и обновлять это изображение в режиме реального времени, используя минимальные ресурсы.

Однако matplotlib перерисовывает все изображение каждый раз, когда я вызываю функцию plt.draw ().Это медленно и интенсивно использует процессор.

Есть ли способ перерисовать только одну строку за раз?

1 Ответ

0 голосов
/ 08 июня 2018

Я не эксперт по внутренним материалам Matplotlib, но я думаю, что это невозможно сделать таким образом.Matplotlib не был предназначен для отображения больших изменяющихся текстур с высокой частотой кадров, он предназначен для обеспечения высокого уровня и очень простого в использовании API для отображения интерактивных графиков.Внутренне он реализован на python и c ++ (для низкоуровневых и высокопроизводительных операций) и использует Tcl / Tk в качестве графического интерфейса пользователя и инструментария виджетов (что обеспечивает большую кроссплатформенную переносимость между операционными системами).Таким образом, ваша матрица 1024x2048 должна быть преобразована несколько раз, прежде чем она отобразится.

Если вам не нужны дополнительные функции, которые предоставляет matplotlib (например, автоматическое масштабирование, оси, интерактивное масштабирование ...), и ваша главная цель - скорость, Я рекомендую вам использовать более ориентированный на производительность Python библиотека / модуль для отображения.Есть много вариантов: pyopencv, pySDL2 ...

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