您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 如何将2D网格点云插入连续区域?

5b51 2022/1/14 8:21:46 python 字数 4874 阅读 515 来源 www.jb51.cc/python

我有一个2维Numpy NDarray填充0到8之间的浮点数.这个2维数组大小是(1000,1600)并且有大约1400个值(点云中的点),其余值是None,所以matplotlib不会绘制这些值.您可以在下图中看到绘制的表格.我想要的是,使用旁边的值插值的None值具有渐变式热图.这个pointcloud代表屋顶的形状,我想把这个数据处理成一个我可以提供给

概述

我有一个2维Numpy ndarray填充0到8之间的浮点数.这个2维数组大小是(1000,1600)并且有大约1400个值(点云中的点),其余值是None,所以matplotlib不会绘制这些值.您可以在下图中看到绘制的表格.我想要的是,使用旁边的值插值的None值具有渐变式热图.这个pointcloud代表屋顶的形状,我想把这个数据处理成一个我可以提供给神经网络以检测屋顶类型的图像.

我用于此图的代码很短,

import matplotlib.pyplot as plt
plt.clf()
#plotGrid is the numpy.ndarray with shape (1000,1600) and dtype float
plt.imshow(plotGrid,cmap='gray',interpolation='nearest')
plt.colorbar()
plt.show()

图片(点击放大,看点):

您可以使用有效值的三角图.为此,您首先需要过滤掉所有的nan值(您应该确实使用无效值np.nan而不是None).
可以将这些值及其坐标放入plt.tricontour()中以获得等高线图而无需手动插值.

import matplotlib.pyplot as plt
import numpy as np

# Generate some example data
f = lambda x,y : np.exp((-(x-150)**2-(y-150)**2)/3.e3)
plotGrid = np.zeros((300,300))*np.nan
coo = np.random.randint(5,295,size=(150,2) )
for x,y in coo:
    plotGrid[y,x] = f(x,y)
#plotGrid is Now a numpy.ndarray with shape (300,300),mostly np.nan,and dtype float

# filter out nan values and get coordinates.
x,y = np.indices(plotGrid.shape)
x,y,z = x[~np.isnan(plotGrid)],y[~np.isnan(plotGrid)],plotGrid[~np.isnan(plotGrid)]

plt.tricontourf(x,z)

plt.colorbar()
plt.show()

enter image description here

tripcolor

使用tripcolor是另一种选择:

plt.tripcolor(x,z,shading='gouraud')

enter image description here

插值和轮廓

您还可以先使用matplotlib.mlab.griddata在网格上插入数据,然后使用正常的contourf图,

xi = np.linspace(0,plotGrid.shape[1],plotGrid.shape[1])
yi = np.linspace(0,plotGrid.shape[0],plotGrid.shape[0])
zi = mlab.griddata(x,xi,yi,interp='linear')
plt.contourf(xi,zi,15)

插值和imshow

或者以同样的方式使用imshow情节,

plt.imshow(zi)

enter image description here

总结

以上是编程之家为你收集整理的python – 如何将2D网格点云插入连续区域?全部内容,希望文章能够帮你解决python – 如何将2D网格点云插入连续区域?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶