博客
关于我
基于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/

你可能感兴趣的文章
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>