博客
关于我
基于PCL利用kdtree计算点云点距均值
阅读量:301 次
发布时间:2019-03-01

本文共 2424 字,大约阅读时间需要 8 分钟。

C++程序运行闪退解决方法:

1.主函数中return 0;前加getchar();需要头文件<iostream>

2.主函数return 0;前加system("pause");

其中代码中在main()函数中添加return true前加了getchar();

注意:代码中提示无法找到源文件pch.h,可以将其注释掉,对代码运行不产生影响!

代码如下:

// PointCloudsDis.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。////#include "pch.h"#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;double computerCloudResolution(const pcl::PointCloud
::ConstPtr cloud) { double res = 0.0; int n_points = 0; int nres; std::vector
indices(2); std::vector
sqr_distances(2); pcl::search::KdTree
tree; tree.setInputCloud(cloud); for (size_t i = 0; i < cloud->size(); ++i) { if (!std::isfinite((*cloud)[i].x)) { continue; } nres = tree.nearestKSearch(i, 2, indices, sqr_distances); if (nres == 2) { res += sqrt(sqr_distances[1]); ++n_points; } } if (n_points != 0) { res /= n_points; } return res; }int main(){ ifstream data; data.open("knee_piece.TXT", ios::in); int rows = -1; char buf[200]; while (!data.eof()) { data.getline(buf, sizeof(buf)); rows++; } data.clear(); data.seekg(0, ios::beg); //pcl::PointCloud
cloud; pcl::PointCloud
::Ptr cloud(new pcl::PointCloud
); cloud->width = rows; cloud->height = 1; cloud->is_dense = false; cloud->resize(cloud->width*cloud->height); for (int i = 0; i < rows; i++) { double num[3]; data >> num[0]; data >> num[1]; data >> num[2]; cloud->points[i].x = num[0]; cloud->points[i].y = num[1]; cloud->points[i].z = num[2]; } double res = computerCloudResolution(cloud); cout << "distance=" << res << endl << "rows=" << rows; getchar(); //防止窗口闪退 return true;}

温馨提示:

积分下载名字叫“基于PCL的点云平均间距计算”,其实真没什么意思,就是以下这段代码,其实和上文中的一样的,况且代码中仅有计算点云间距的代码!下载链接:

不要冤枉浪费积分!

#include 
float means_re(pcl::PointCloud
::Ptr cloud){ float res = 0.0; int n_points = 0; int nres; std::vector
indices(2); std::vector
sqr_distances(2); pcl::KdTreeFLANN
tree; tree.setInputCloud(cloud); for (size_t i = 0; i < cloud->size(); ++i) { if (!pcl_isfinite(cloud->points[i].x)) { continue; } //Considering the second neighbor since the first is the point itself. nres = tree.nearestKSearch(i, 2, indices, sqr_distances); if (nres == 2) { res += sqrt(sqr_distances[1]); ++n_points; } } if (n_points != 0) { res /= n_points; } //std::cout <<"平均距离:"<
<

 参考博文:

1、

2、

 

转载地址:http://ogdo.baihongyu.com/

你可能感兴趣的文章
Navicat for MySQL 查看BLOB字段内容
查看>>
Navicat for MySQL笔记1
查看>>
Navicat for MySQL(Ubuntu)过期解决方法
查看>>
Navicat Premium 12 卸载和注册表的删除
查看>>
Navicat 导入sql文件
查看>>
navicat 添加外键1215错误
查看>>
navicat 系列软件一点击菜单栏就闪退
查看>>
navicat 自动关闭_干掉Navicat!MySQL官方客户端到底行不行?
查看>>
Navicat 设置时间默认值(当前最新时间)
查看>>
navicat 连接远程mysql
查看>>
navicat:2013-Lost connection to MySQL server at ‘reading initial communication packet解决方法
查看>>
Navicate for mysql 数据库设计-数据库分析
查看>>
Navicat下载和破解以及使用
查看>>
Navicat中怎样将SQLServer的表复制到MySql中
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>
Navicat向sqlserver中插入数据时提示:当 IDENTITY_INSERT 设置为 OFF 时,不能向表中的标识列插入显式值
查看>>
Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
查看>>
Navicat如何连接MySQL
查看>>
navicat导入.sql文件出错2006- MySQLserver has gone away
查看>>