我应该如何绘制 XYZ 数据点以在 python 中创建 RGB 深度图像

我正在开发一个小项目,其中给我一个 XYZ 数据的二维数组。以这种方式:

a = [[1,7,13,3,4],
     [6,21,32,11,2]]

其中x表示数组的列,y表示数组的行,z表示数组的内容,即距离。我想要完成的是使用二维数组并以 RGB 格式绘制深度图像。详细来说,距离(z)值越近,我希望该点被绘制为红色。随着距离 (z) 值的增加,我想根据距离有多大将其绘制为黄色、绿色或蓝色。

为了更好地说明,我添加了示例图片。

https://img1.sycdn.imooc.com/65a52e5000019a2702620234.jpg

我正在尝试用 python 来完成这个任务。我尝试研究它,但大多数时候我发现如何从深度图像或点云中提取 XYZ 数据,而不是使用 XYZ 数据来绘制深度图像。

请告诉我这是否可行,或者有哪些 python 库可以实现这一点。

谢谢。

编辑:我相信注意到二维阵列由测距传感器生成的点云数据可能会有所帮助。我希望能够使用数据点构建扫描区域的静态二维图像。我还想利用色彩图来可视化图像的深度。


繁花不似锦
浏览 53回答 2
2回答

阿波罗的战车

这是一个使用的示例seaborn:生成样本数据:pip install seaborn  # for those who have not yet installed seaborn---AND---import seaborn as snsdef func(x, y):    return np.exp(-x**2-y**2)xaxis = np.linspace(-1, 1, 100)yaxis = np.linspace(-1, 1, 200)result = func(xaxis[:,None], yaxis[None,:])绘图:sns.heatmap(result, cmap=sns.color_palette("Spectral_r", as_cmap=True))plt.yticks([],[])plt.xticks([],[])结果:

胡说叔叔

类似的事情吗?from matplotlib.pylab import plta = [[1,7,13,3,4],     [6,21,32,11,2]]plt.matshow(a, cmap=plt.cm.viridis)plt.colorbar()您可以传递大型数组,例如图像。在这里,我使用 matplotlib 中的示例图像,剪切颜色以获得 (120, 560) 而不是 (120, 560, 3) 数组,然后显示它:from matplotlib.pylab import pltfrom matplotlib.cbook import get_sample_datafn = get_sample_data("logo2.png", asfileobj=False)img = plt.imread(fn, format='png')[...,0] #get single color channelplt.matshow(img,cmap=plt.cm.jet,interpolation='bicubic')#see imshow for more argumentsplt.colorbar()如果我没记错的话 plt.matshow 是 plt.imshow 的子类
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python