我目前正在使用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对象。
答案 0 :(得分:0)
简单的一个:
figure, axis = plt.subplots(figsize=(7.6, 6.1))
im = axis.imshow(***SOME ARRAY***)
如果你想重置绘图数据
im.set_data(***SOME OTHER ARRAY***)