资源简介

在应用中,有时需要将点云数据去掉背景,保留本体,最简单的方法,将点云数据与背景数据相减,留下来的既是本体数据

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include //写入txt
#include
#include //将整型转换成字符型


using namespace std;  // 可以加入 std 的命名空间

//给定两个点云A和B,求取两个点云的不同之处,A异B表示在A中不在B中的点,B异A表示在B中不在A中的点


int
main(int argc char** argv)
{
string ReviseName;
cout << “是否已经修改输出文件(A异B和B异A)的名称?请输入Y或N。“ << endl;//不参与计时,因此与输入时间时的人的反应有关
cin >> ReviseName;
if (ReviseName != “Y“)
{
return (-1);//跳出整个程序
}


//-------------------------------------------------------------------------------
srand(time(NULL));  //seeds rand() with the system time 
time_t begin end;
begin = clock();  //开始计时
//-------------------------------------------------------------------------------


pcl::PointCloud::Ptr Acloud(new pcl::PointCloud); // 存放A点云
if (pcl::io::loadPCDFile(“basicpoint.pcd“ *Acloud) == -1)//*打开点云文件。
{                                                                           //带路径的格式【注意路径的反斜杠与电脑自己的不同】:if (pcl::io::loadPCDFile(“E:/rabbit_gra.pcd“ *cloud) == -1) 
PCL_ERROR(“Couldn‘t read that boundary pcd file\n“);                             // //不带路径的格式【只是把路径删掉即可】:if (pcl::io::loadPCDFile(“rabbit_gra.pcd“ *cloud) == -1) 
return(-1);
}


pcl::PointCloud::Ptr Bcloud(new pcl::PointCloud); // 存放B点云
if (pcl::io::loadPCDFile(“background.pcd“ *Bcloud) == -1)//*打开点云文件。
{                                                                           //带路径的格式【注意路径的反斜杠与电脑自己的不同】:if (pcl::io::loadPCDFile(“E:/rabbit_gra.pcd“ *cloud) == -1) 
PCL_ERROR(“Couldn‘t read that outlier pcd file\n“);                             // //不带路径的格式【只是把路径删掉即可】:if (pcl::io::loadPCDFile(“rabbit_gra.pcd“ *cloud) == -1) 
return(-1);
}


pcl::KdTreeFLANN kdtree;
kdtree.setInputCloud(Bcloud);//在Bcloud中进行搜索
int K = 1;
float p = 1e-3;
std::vector pointIdxNKNSearch(K);//进行1邻域点搜索
std::vector pointNKNSquaredDistance(K);



//设置参数
int nr_Apoints = (int)Acloud->points.size();//获得Acloud的大小,用于计算时的循环
int nr_Bpoints = (int)Bcloud->points.size();//获得Bcloud的大小,用于计算时的循环

std::vector LA01(nr_Apoints 0); //存放各点有无重合点的标记。初始化为0,其中0表示无重合点,1表示有重合点
std::vector LB01(nr_Bpoints 0); //存放各点有无重合点的标记。初始化为0,其中0表示无重合点,1表示有重合点

std::vector LA;  LA.clear();  //存放A中异于B的点,初始为空!!!不定义长度,因此后面要用L.push_back(i)来压入数据。
std::vector LB;  LB.clear();  //存放B中异于A的点,初始为空!!!不定义长度,因此后面要用L.push_back(i)来压入数据。

for (int i = 0; i < nr_Apoints; ++i)//对A中的每个点与B中点进行比较
{
if (kdtree.nearestKSearch(Acloud->points[i] K pointIdxNKNSearch pointNKNSquaredDistance) > 0)
{
//cout << pointNKNSquaredDistance[0] << endl;
if (pointNKN

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     36352  2020-10-27 12:45  点云求异\.vs\点云求异\v15\.suo

     文件  102416384  2020-10-27 12:45  点云求异\.vs\点云求异\v15\Browse.VC.db

     文件    8031232  2018-07-12 13:56  点云求异\x64\Debug\点云求异.pdb

     文件      90624  2020-10-27 12:45  点云求异\x64\Release\点云求异.exe

     文件    2569393  2020-10-27 12:45  点云求异\x64\Release\点云求异.iobj

     文件     958768  2020-10-27 12:45  点云求异\x64\Release\点云求异.ipdb

     文件    5427200  2020-10-27 12:45  点云求异\x64\Release\点云求异.pdb

     文件    4253524  2020-10-26 13:27  点云求异\点云求异\background.pcd

     文件    2340391  2020-10-27 12:38  点云求异\点云求异\background2.pcd

     文件    4552819  2020-10-24 16:03  点云求异\点云求异\basicpoint.pcd

     文件     975002  2020-10-27 12:38  点云求异\点云求异\basicpoint2.pcd

     文件    3577999  2020-10-27 12:38  点云求异\点云求异\crosspoint.pcd

     文件       6161  2018-05-11 14:10  点云求异\点云求异\PCLDebug64.props

     文件       5870  2020-10-27 12:45  点云求异\点云求异\SeekDifference.cpp

     文件    3469491  2020-10-27 11:09  点云求异\点云求异\x64\Debug\SeekDifference.obj

     文件    7089152  2018-07-12 13:56  点云求异\点云求异\x64\Debug\vc120.idb

     文件    4747264  2018-07-12 13:56  点云求异\点云求异\x64\Debug\vc120.pdb

     文件    2804736  2020-10-27 11:09  点云求异\点云求异\x64\Debug\vc141.idb

     文件    5500928  2020-10-27 11:09  点云求异\点云求异\x64\Debug\vc141.pdb

     文件        303  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.log

     文件       1744  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.tlog\cl.command.1.tlog

     文件     689818  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.tlog\CL.read.1.tlog

     文件        878  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.tlog\CL.write.1.tlog

     文件      11538  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.tlog\link.command.1.tlog

     文件      27780  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.tlog\link.read.1.tlog

     文件        458  2020-10-27 11:09  点云求异\点云求异\x64\Debug\点云求异.tlog\link.write.1.tlog

     文件          0  2020-10-27 11:08  点云求异\点云求异\x64\Debug\点云求异.tlog\unsuccessfulbuild

     文件        215  2020-10-27 11:08  点云求异\点云求异\x64\Debug\点云求异.tlog\点云求异.lastbuildstate

     文件    9530786  2020-10-27 12:45  点云求异\点云求异\x64\Release\SeekDifference.obj

     文件    5369856  2020-10-27 12:45  点云求异\点云求异\x64\Release\vc141.pdb

............此处省略32个文件信息

评论

共有 条评论