在python中将数组显示为栅格图像
image
image-processing
numpy
python
7
0

我在Python中有一个numpy数组,我想以光栅图像的形式在屏幕上显示它。最简单的方法是什么?它不需要特别花哨或有一个漂亮的界面,我要做的就是将数组的内容显示为灰度光栅图像。

我正在尝试使用NumPy将一些IDL代码转换为Python,并且基本上是在寻找IDL中的tvtvscl命令的替代品。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

根据您的需求, matplotlib的imshow脾气暴躁可能是最好的选择。

Matplotlib无限灵活,但是速度却很慢(即使您正确执行所有操作,matplotlib中的动画也可能会占用大量资源。)但是,您将拥有一个非常精彩的,功能齐全的绘图库。

Glumpy非常适合2D numpy数组的快速,基于openGL的显示和动画处理,但它的功能受到更多限制。但是,如果您需要对一系列图像进行动画处理或实时显示数据,则比matplotlib更好。

使用matplotlib(使用pyplot API代替pylab):

import matplotlib.pyplot as plt
import numpy as np

# Generate some data...
x, y = np.meshgrid(np.linspace(-2,2,200), np.linspace(-2,2,200))
x, y = x - x.mean(), y - y.mean()
z = x * np.exp(-x**2 - y**2)

# Plot the grid
plt.imshow(z)
plt.gray()
plt.show()

使用脾气暴躁:

import glumpy
import numpy as np

# Generate some data...
x, y = np.meshgrid(np.linspace(-2,2,200), np.linspace(-2,2,200))
x, y = x - x.mean(), y - y.mean()
z = x * np.exp(-x**2 - y**2)

window = glumpy.Window(512, 512)
im = glumpy.Image(z.astype(np.float32), cmap=glumpy.colormap.Grey)

@window.event
def on_draw():
    im.blit(0, 0, window.width, window.height)
window.mainloop()
收藏
评论

快速添加:对于使用matplotlib进行显示,如果要使图像显示为“光栅”,即像素化后不进行平滑处理,则应在imshow调用中包括选项insert ='nearest'。

收藏
评论

在pylab交互模式下使用ipython,您可以执行以下操作:

$ ipython pylab
In [1]: imshow(your_array)

或不在pylab模式下:

$ ipython
In [1]: from pylab import *
In [2]: imshow(your_array)
In [3]: pylab.show()

或没有pylab名称空间的东西:

$ ipython
In [1]: import matplotlib.pyplot as pyplot
In [2]: pyplot.imshow(your_array)
In [3]: pyplot.show()
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号