Я работаю над некоторым алгоритмом компьютерного зрения, и я хотел бы показать, как изменяется массив numpy на каждом шаге.
Теперь работает то, что если у меня есть простой imshow( array )
в конце моего кода, окно отображает и показывает окончательное изображение.
Однако мне хотелось бы обновить и отобразить окно imshow при изменении изображения на каждой итерации.
Итак, например, я хотел бы сделать:
import numpy as np
import matplotlib.pyplot as plt
import time
array = np.zeros( (100, 100), np.uint8 )
for i in xrange( 0, 100 ):
for j in xrange( 0, 50 ):
array[j, i] = 1
#_show_updated_window_briefly_
plt.imshow( array )
time.sleep(0.1)
Проблема заключается в том, что таким образом окно Matplotlib не активируется, только после завершения всего вычисления.
Я пробовал как родные matplotlib, так и pyplot, но результаты те же. Для построения команд я нашел переключатель .ion()
, но здесь он не работает.
Q1. Каков наилучший способ непрерывного отображения обновлений в массиве numpy (на самом деле это изображение с оттенком серого uint8)?
Q2. Возможно ли это сделать с помощью функции анимации, например, в примере динамического изображения? Я бы хотел вызвать функцию внутри цикла, поэтому я не знаю, как это сделать с помощью функции анимации.