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

本文介绍了如何使用C++和Python进行点云处理,通过两个点云的相减操作来找出重复点和非重复点。在Python中,利用numpy库可以轻松实现这一功能,而在C++中则需要编写更复杂的代码来达到相同目的。
摘要由CSDN通过智能技术生成

两个点云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:
            
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
两个点云相减,可以通过比较两个点云中的每个的坐标来找到重复重复重复是指在两个点云中都存在的,即具有相同坐标的。我们可以遍历一个点云中的每个,并在另一个点云中查找是否存在相同坐标的。如果存在,则将其标记为重复重复是指在一个点云中存在,而在另一个点云中不存在的。同样,我们可以遍历一个点云中的每个,并在另一个点云中查找是否存在具有相同坐标的。如果不存在,则将其标记为重复。 可以使用以下伪代码实现这个过程: ```python def subtract_point_clouds(point_cloud1, point_cloud2): repeated_points = [] # 重复列表 non_repeated_points = [] # 重复列表 for point1 in point_cloud1: # 遍历第一个点云 if point1 in point_cloud2: # 在第二个点云中查找是否存在相同坐标的 repeated_points.append(point1) else: non_repeated_points.append(point1) return repeated_points, non_repeated_points ``` 这个函数接受两个点云作为输入,返回两个列表,分别为重复重复的集合。在遍历第一个点云的每个时,使用`in`操作符在第二个点云中查找是否有相同坐标的。如果存在,将其添加到重复列表中;如果不存在,将其添加到重复列表中。 通过调用这个函数,我们可以找到两个点云重复重复,并将结果用于进一步的处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云-激光雷达-Slam-三维牙齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值