为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2024-01-15 21:08:12
我正在开发一个小项目,其中给我一个 XYZ 数据的二维数组。以这种方式:a = [[1,7,13,3,4],      [6,21,32,11,2]]其中x表示数组的列,y表示数组的行,z表示数组的内容,即距离。我想要完成的是使用二维数组并以 RGB 格式绘制深度图像。详细来说,距离(z)值越近,我希望该点被绘制为红色。随着距离 (z) 值的增加,我想根据距离有多大将其绘制为黄色、绿色或蓝色。为了更好地说明,我添加了示例图片。我正在尝试用 python 来完成这个任务。我尝试研究它,但大多数时候我发现如何从深度图像或点云中提取 XYZ 数据,而不是使用 XYZ 数据来绘制深度图像。请告诉我这是否可行,或者有哪些 python 库可以实现这一点。谢谢。编辑:我相信注意到二维阵列由测距传感器生成的点云数据可能会有所帮助。我希望能够使用数据点构建扫描区域的静态二维图像。我还想利用色彩图来可视化图像的深度。
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这是一个使用的示例seaborn:


生成样本数据:


pip install seaborn  # for those who have not yet installed seaborn

---

AND

---

import seaborn as sns


def 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([],[])

结果:

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

查看完整回答
反对 回复 2024-01-15
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

类似的事情吗?


from matplotlib.pylab import plt

a = [[1,7,13,3,4],

     [6,21,32,11,2]]

plt.matshow(a, cmap=plt.cm.viridis)

plt.colorbar()

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

您可以传递大型数组,例如图像。在这里,我使用 matplotlib 中的示例图像,剪切颜色以获得 (120, 560) 而不是 (120, 560, 3) 数组,然后显示它:


from matplotlib.pylab import plt

from matplotlib.cbook import get_sample_data

fn = get_sample_data("logo2.png", asfileobj=False)

img = plt.imread(fn, format='png')[...,0] #get single color channel

plt.matshow(img,cmap=plt.cm.jet,interpolation='bicubic')#see imshow for more arguments

plt.colorbar()

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

如果我没记错的话 plt.matshow 是 plt.imshow 的子类



查看完整回答
反对 回复 2024-01-15
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信