C++ PCL:仅使用一个坐标,如何找到一个点或所有可能点的剩余两个坐标?

C++ PCL:仅使用一个坐标,如何找到一个点或所有可能点的剩余两个坐标?,c++,computer-vision,point-cloud-library,point-clouds,C++,Computer Vision,Point Cloud Library,Point Clouds,假设我有一个点云,我只知道一个点的一个坐标。例如,使用pcl::getMinMax3D()方法,我有3个最小值和3个最大值 但是,问题是,最小X、Y或Z值不必对应于同一点!这些值很可能对应于三个不同的点。基本上,该方法返回的是最小值和最大值,而不是点 所以,对任何坐标使用一个最小值或最大值,我想找到剩下的两个坐标,即最终一个有效点或多个点。如何使用PCL(点云库)实现这一点?只需使用STL算法即可: auto point = std::min_element(cloud.begin(), clo

假设我有一个点云,我只知道一个点的一个坐标。例如,使用
pcl::getMinMax3D()
方法,我有3个最小值和3个最大值

但是,问题是,最小X、Y或Z值不必对应于同一点!这些值很可能对应于三个不同的点。基本上,该方法返回的是最小值和最大值,而不是点


所以,对任何坐标使用一个最小值或最大值,我想找到剩下的两个坐标,即最终一个有效点或多个点。如何使用PCL(点云库)实现这一点?

只需使用STL算法即可:

auto point = std::min_element(cloud.begin(), cloud.end(), [](auto& p1, auto& p2) {return p1.x < p2.x; });
auto-point=std::min_元素(cloud.begin(),cloud.end(),[](auto&p1,auto&p2){return p1.x
感谢您发布解决方案,但它不起作用!它给了我这个错误:
error:'const类uu gnu_cxx::u normal_iterator'没有名为'x'的成员auto point=std::min(cloud->begin(),cloud->end(),[](auto&p1,auto&p2){return p1.x和这一个
/usr/include/c++/7/bits/stl_algobase.h:246:17:错误:无法将“u comp.main():(*&u b),(*&u a))”从“void”转换为“bool”,如果(u comp(u b,u a))~~~~~~~~~~~~~我甚至尝试用
pcl::point xyi=auto>替换
(cloud->begin(),cloud->end(),[](pcl::PointXYZ&p1,pcl::PointXYZ&p2){return p1.x
但它仍然给出了第二个错误:
…algobase.h:246:17:错误:调用“(main():)(const u gnu cxx:u normal_迭代器&,const u gnu cxx:u normal迭代器&)&)'if(u comp(u()
尝试p1->x和p2->x。p1和p2是指向某一点的迭代器,其值可以通过->运算符查询。对于混淆,我很抱歉,我更新了答案。再次感谢更正您的答案。这次,它被编译。但是,它给出的最终答案是错误的。例如,对于
pt1(8.0f,0.0f,0.0f)
pt2(0.0f,6.0f,0.0f)
pt3(0.0f,0.0f,4.0f)
pt4(1.0f,1.0f,1.0f)
类型的
pcl::PointXYZ
,输出“我得到的是
std::cout同样,你是如何决定它应该是
p1->x
&
p2->x
而不是
p1.x
&
p2.x
?如果可能的话,你能详细说明一下吗?我现在非常困惑!提前谢谢!