好的,我问了一个围绕 vrep 的类似问题,但它有点具体,实际上一个更简单的基于 python 的问题会更有用。但是,如果有人能够提供有用的信息,我会留下这个问题。
这是问题; 如何获取包含图像数据的一维列表,将其转换为 numpy 数组然后显示它?
这是我到目前为止:
im = np.array(image, dtype=np.uint8)
im.resize(128,128,3) #reshape this array into an image form (e.g. rather than 49152)
mlp.imshow(im)
pylab.show(im)
在这里,图像从 simxGetVisionSensorImage 返回(如果您不了解 vrep 则不重要)并且是一个列表。然后我尝试创建一个 numpy 数组并读入数据,将它从一个有符号的 8 位整数转换为一个无符号的 8 位整数。然后我调整它的大小(它是一个 49152 长度的列表,对应于 128x128 的分辨率)并尝试使用 matplotlib 或 pylab 显示它。
以下是您需要的内容:
import numpy as np
import matplotlib.pyplot as mlp
import pylab
matplotlib.show 命令甚至不显示图像窗口。pylab.show 命令抛出此错误:
Traceback (most recent call last):
File "vrep_epuck.py", line 59, in <module>
pylab.show(im)
File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 244, in show
return _show(*args, **kw)
File "/usr/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 165, in __call__
if block:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
如果您想查看整个代码或查看 vrep 的内容,这里是原始 vrep 问题的链接:
这将有助于保持在通常的命名约定内。
因为那样的话,pyplot.show()
不以图像为参数会更明显。因此,不要使用pyplot.show(some_image_as_argument)
而简单地使用pyplot.show()
.
import matplotlib.pyplot as plt
image = ...
im = np.array(image, dtype=np.uint8)
im.resize(128,128,3)
plt.imshow(im)
plt.show()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句