我正在尝试使用Visual Studio的Point Cloud Library.我下载了一体式64位安装程序Visual Studio 10并安装了它们.但是现在我无法在Visual Studio 2010上运行它,我在官方页面上尝试了教程而没有运气.
我想在我的解决方案的属性中添加包含和lib位置,以及.lib文件.
我以前用opencv做过这个,但是对于PCL,我不知道我要添加哪些文件和文件夹.
还有什么.dll文件我必须添加到系统变量的路径.
Cmake不起作用,我不想使用它.
我需要找到两个三维点云之间的变换和旋转差异.为此,我正在寻找PCL,因为它看起来很理想.
关于干净的测试数据我有迭代最近点工作,但给出了奇怪的结果(虽然我可能已经错误地实现了...)我有pcl::estimateRigidTransformation
工作,看起来更好,虽然我认为会更糟糕的数据噪音.
我的问题是:
这两个云会很吵,虽然它们应该包含相同的点,但会有一些差异.处理这个问题的最佳方法是什么?
我应该在两个云中找到相应的功能开始然后使用estimateTransform
吗?或者我应该看一个RANSAC
删除异常值的函数?是ICP
一个更好的方式去estimateRigidTransform
?
我正在对RGB和深度数据进行一些处理并构建可视化的云点,我目前使用PCL Visualizer并且它工作正常.我希望将可视化工具放在不同的线程中(实时,因此它将重绘全局云点,我尝试了提升线程,但我得到了运行时错误"VTK错误查找表"
任何人都知道如何在不同的线程中可视化云点流?
我想知道这是否可行.我有一个功能:
pcl::PointCloud<pcl::PointXYZRGB> createPointCloud(std::Vector<Nodes> input)
Run Code Online (Sandbox Code Playgroud)
返回点云.我想知道是否可以采用这一点云,并指出它的副本.pcl像这样指向云:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR(new pcl::PointCloud<pcl::PointXYZRGB>)
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR(createPointCloud(nodeList))
Run Code Online (Sandbox Code Playgroud)
这导致了一个非常明显的错误,即.createPointCloud不会返回指向云的指针.
我也试过这个:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR = &createPointCloud(nodeList)
Run Code Online (Sandbox Code Playgroud)
还有这个:
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloudPTR(&createPointCloud(nodeList))
Run Code Online (Sandbox Code Playgroud)
这导致编译错误:"获取临时地址"
是函数返回指针类型的唯一选择还是有办法做我要求的?
编辑:
以下两个答案都是正确的,我已经给Jonathon这个时候第一次得到了正确的答案.
我想知道的区别(S)PCL :: PCLPointCloud2和PCL ::点云中的点云库(PCL).有一个函数可以从一个转换为另一个,但文档很差.我想知道哪一个更新?
ps(我不是在谈论ROS)
我正在处理点云,即点的向量,作为计算的结果,其包含重复点(高达云的大小的10%).
我的实现是根据x,y和z值对这些点进行排序,然后使用该std::unique
函数.然而,生成的云仍然包含重复项,即使排序本身似乎有效.
这是至关重要的代码
bool comparePoint(pcl::PointXYZINormal p1, pcl::PointXYZINormal p2){
if (p1.x != p2.x)
return p1.x > p2.x;
else if (p1.y != p2.y)
return p1.y > p2.y;
else
return p1.z > p2.z;
}
bool equalPoint(pcl::PointXYZINormal p1, pcl::PointXYZINormal p2){
if (p1.x == p2.x && p1.y == p2.y && p1.z == p2.z)
return true;
return false;
}
void KDsearch::cullDuplePoints(){
std::sort(points.begin(), points.end(), comparePoint);
std::unique(points.begin(), points.end(), equalPoint);
}
Run Code Online (Sandbox Code Playgroud)
这里是输出pointcloud(x,y和z坐标)的部分提取:
1.96828 -535.09515 2794.8391
1.96627 -636.95264 2914.0366
1.96627 -636.95264 2914.0366
1.9651 108.77433 2350.9841
1.9651 108.77433 2350.9841 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PCL CloudViewer 可视化点云.问题是,我是很新的C++,我发现两个教程第一示范点云的创建和第二示范一个点云的可视化.但是,我无法将这两个教程结合起来.
这就是我的意思:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
// Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * …
Run Code Online (Sandbox Code Playgroud) 有组织的点云和无组织点云之间有什么区别?
我是否正确地认为点云是[x,y,z]值的一列?如果有组织或无组织的点云的结构有什么不同呢?
它如何影响后续处理步骤,如过滤,正常估计,注册等?
谢谢,赛
我正在尝试在Ubuntu 16.04上运行PCL 1.7(点云库,而不是其他pcl).我最终希望用于C++的东西,但是现在我只是想让这些例子运行起来.我正在使用Ubuntu(GNU 5.3.1)和Cmake版本3.5.2附带的默认编译器.我一直在关注PCL网站上的指示(这里和这里),但是在让Cmake构建它想要构建的东西后,我现在停留在使用'make'命令的位置.这是我得到的错误
[ 50%] Building CXX object CMakeFiles/pcd_write.dir/pcd_write.cpp.o
<command-line>:0:15: warning: missing whitespace after the macro name
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so', needed by 'pcd_write'. Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/pcd_write.dir/all' failed
make[1]: *** [CMakeFiles/pcd_write.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)
当我正在建造东西时,Cmake也给了我警告,那些就在这里.他们不会阻止它运行,但它们可能是相关的.
-- Found OpenNI2: /usr/lib/libOpenNI2.so
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png …
Run Code Online (Sandbox Code Playgroud)