【发布时间】:2017-11-27 21:45:40
【问题描述】:
好的,我问了一个与 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 问题的链接:
【问题讨论】:
-
您可以尝试在调整大小之前和之后打印 im 数组的维度吗?
-
当然。我使用 im.shape 给我在 im = np.array(image, dtype=np.uint8) 打印 (49152,) 之后的尺寸,我在 im.resize(128,128,3) 打印后再次使用 im.shape ( 128, 128, 3) 我不知道为什么最初打印输出中有逗号,然后没有数字。
标签: python arrays list numpy matplotlib