如何更新Matplotlib的im_show()的数据

时间:2016-10-27 19:23:22

标签: python matplotlib imshow

我目前正在使用MPL的 im_show()功能,以显示IFM 3D相机的深度图像。我可以显示相机的单个场景,没有任何问题。虽然,我发现所显示的图像在一个场景与下一个场景之间没有差别(即改变相机从一个场景看到另一个场景)。尽管如此,深度图的实际数据正在发生变化。

我一直在研究如何使用MPL动态更改图像,但我找不到合适的解决方案。

在调用方法readNextFrame()之后,深度图在结果字典中被称为称为距离的键。虽然我的问题涉及绘图代码。简而言之,代码看起来像这样:

import o3d3xx
import array
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

imageWidth = 176
imageHeight = 132

#create ImageClient Object
pcic = o3d3xx.ImageClient("Camera IP",50010)

#store distance array as variable 'distance'
result = pcic.readNextFrame()
distance = result["distance"]

#convert to np array and reshape 
distance = np.asarray(distance)
distance = distance.reshape(imageHeight,imageWidth)

#plot distance array
plt.figure()
plt.title("Distance Image")
plt.imshow(distance)
plt.show()

更改场景后,我知道实际的距离数组正在改变,因为我已经将一个场景的数据阵列与下一个场景进行了比较。解决这个问题的唯一方法是创建一个新的ImageClient对象,但我想避免这种情况。

有关如何解决此问题的任何想法?最后我想调用readNextFrame()并使用imshow()在场景发生变化后显示新的深度图像而不创建新的ImageClient对象。

1 个答案:

答案 0 :(得分:0)

简单的一个:

figure, axis = plt.subplots(figsize=(7.6, 6.1))
im = axis.imshow(***SOME ARRAY***)

如果你想重置绘图数据

im.set_data(***SOME OTHER ARRAY***)