两个点云相减,找到重复点和非重复点(c++ python 代码)

两个点云a, b相减,其实就是找到二个点云中的重复点和非重复点,去掉a中的重复点就是减去b之后的点云,用python很好实现,直接用numpy 的查找功能就行了, c++ 的麻烦一点,并且要求更高。

下面是c++  和 python 代码


# coding:utf-8
import open3d as o3d
import numpy as np

pcd = o3d.io.read_point_cloud("lidar1.pcd")  # 读取pcd文件
pcd2 = o3d.io.read_point_cloud("lidar2.pcd")  # 读取pcd文件

print(pcd)  # 只是简单的打印信息:PointCloud with 113662 points.
print(pcd2)  #


def filter_other(cloud, cloud2):
    # 输入是 点云 数据,输出也是 点云 数据
    a = np.asarray(cloud.points)
    b = np.asarray(cloud2.points)

    # 初始化一个空数组,用于存储相同的行
    common_rows = []
    noncommon_rows = []

    # 遍历a_sorted中的每一行
    for row in a:
        # 使用 np.all() 和 np.any() 函数找到相同的行
        same_rows = np.all(b == row, axis=1)
        # print(same_rows)
        if np.any(same_rows):
            common_rows.append(row)
        else:
            

你可能感兴趣的:(点云-激光雷达处理代码合集,python,c++,numpy)