Я хочу отобразить файл изображения с помощью imshow. Это изображение в градациях серого 1600x1200, и я обнаружил, что matplotlib использует float32 для декодирования значений. Загрузка изображения занимает около 2 секунд, и я хотел бы знать, есть ли способ сделать это быстрее. Дело в том, что мне действительно не нужно изображение с высоким разрешением, я просто хочу отметить определенные точки и нарисовать изображение в качестве фона. Итак,
- Первый вопрос: 2 секунды - это хорошая производительность для такого изображения или
можно мне ускорить.
- Второй вопрос: если это хорошая производительность, как я могу сделать процесс
быстрее за счет уменьшения разрешения. Важный момент: я все еще хочу
Изображение растянется до 1600x1200 пикселей в конце.
Мой код:
import matplotlib
import numpy
plotfig = matplotlib.pyplot.figure()
plotwindow = plotfig.add_subplot(111)
plotwindow.axis([0,1600,0,1200])
plotwindow.invert_yaxis()
img = matplotlib.pyplot.imread("lowres.png")
im = matplotlib.pyplot.imshow(img,cmap=matplotlib.cm.gray,origin='centre')
plotfig.set_figwidth(200.0)
plotfig.canvas.draw()
matplotlib.pyplot.show()
Это то, что я хочу сделать. Теперь, если изображение, сохраненное в lowres.png, имеет более низкое разрешение, например 1600x1200 (т.е. 400x300), оно отображается в верхнем углу, как и должно быть. Как я могу масштабировать его до 1600x1200 пикселей?
Если я запускаю эту программу, медленная часть получается из команды canvas.draw () ниже. Есть ли способ ускорить эту команду?
Заранее спасибо!
По вашим предложениям Я обновился до последней версии matplotlib
версия 1.1.0svn, оформить заказ 8988
И я также использую следующий код:
img = matplotlib.pyplot.imread(pngfile)
img *= 255
img2 = img.astype(numpy.uint8)
im = self.plotwindow.imshow(img2,cmap=matplotlib.cm.gray, origin='centre')
и, тем не менее, отображение изображения занимает около 2 секунд ... Есть еще идеи?
Просто добавить: Я нашел следующую функцию
zoomed_inset_axes
Таким образом, в принципе, matplotlib должен быть в состоянии выполнить задачу. Там же можно нарисовать картинку в увеличенном виде ...