小编Dav*_*sia的帖子

用numpy在边界框中查找点

我有多个存储在二维numpy数组中的点云文件中的数百万个xyz坐标:[[x1, y1, z1], [x2, y2, z2],..., [xn, yn, zn]]

我想过滤由4个坐标([[x1, y1], [x2, y2]]即矩形的左下角和右上角坐标)描述的特定边界框内的所有点。

我已经找到了以下代码来用numpy过滤坐标,这几乎是我想要的。唯一的区别是(如果我做对了)我的二维数组也具有z坐标。

import random
import numpy as np

points = [(random.random(), random.random()) for i in range(100)]

bx1, bx2 = sorted([random.random(), random.random()])
by1, by2 = sorted([random.random(), random.random()])

pts = np.array(points)
ll = np.array([bx1, by1])  # lower-left
ur = np.array([bx2, by2])  # upper-right

inidx = np.all(np.logical_and(ll <= pts, pts <= ur), axis=1)
inbox = pts[inidx]
outbox = pts[np.logical_not(inidx)]
Run Code Online (Sandbox Code Playgroud)

我如何修改上面的代码以使其与xyz坐标一起工作,并通过由两个xy坐标描述的边界框进行过滤?

python numpy coordinates point-clouds

4
推荐指数
2
解决办法
3798
查看次数

从函数的签名中获取位置参数的名称

使用Python 3.x,我试图从某个函数获取所有位置参数的名称,即:

def foo(a, b, c=1):
    return
Run Code Online (Sandbox Code Playgroud)

现在我这样做:

from inspect import signature, _empty
args =[x for x, p in signature(foo).parameters.items() if p.default == _empty]
Run Code Online (Sandbox Code Playgroud)

当函数alows*args即:

def foo(a, b, c=1, *args):
    return
Run Code Online (Sandbox Code Playgroud)

我正在添加这一行:

args.remove("args")
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法来实现这一目标.


正如Jim Fasarakis-Hilliard建议的那样,处理*args案例的一个更好方法是使用Parameter.kind:

from inspect import signature, Parameter
args =[]
for x, p in signature(foo).parameters.items():
    if p.default == Parameter.empty and p.kind != Parameter.VAR_POSITIONAL:
        args.append(x)
Run Code Online (Sandbox Code Playgroud)

python signature python-3.x

4
推荐指数
1
解决办法
1383
查看次数

点云文件格式(PCL)

我是Point Clouds的新手,我对整个概念非常热心,所以我搜索了一下,找到了Point Cloud Library(PCL).

http://www.pointclouds.org

我期待PCL能够加载大多数流行的点云文件格式,但据我所知,PCL似乎绕着他们自己的文件格式PCD进行轨道运行.

我一直在四处寻找,但我想对一些事情有更多的见解:

什么是最常用的点云文件格式?

通过PCL支持哪些点云文件格式?

编辑:是否有可用的点云文件集合?理想情况下,XYZRGB可以玩.

谢谢,

c++ point-clouds point-cloud-library

4
推荐指数
1
解决办法
2545
查看次数

如何将 las 文件转换为 ply 文件?

我想在 MATLAB 中打开 3D 点云。但它们都在.las文件中。我怎样才能在MATLAB中显示它们???

我听说.ply文件可以在 MATLAB 上打开 3D 点数据。所以我想知道如何将las文件转换为ply文件。

matlab point-clouds lidar

4
推荐指数
1
解决办法
1万
查看次数