PCL 未正确安装 vcpkg

PCL not properly installed with vcpkg

我已经使用 ./vcpkg install pcl:x64-windows 安装了带有 vcpkg 的 PCL。
一段时间后,我注意到 concave_hull.h、convex_hull.h 和 qhull.h 没有与库的其余部分一起安装。
有关我正在使用的内容的其他信息:

为了完成起见,我包含了导致我遇到此问题的代码:

#include <pcl/surface/concave_hull.h>
#include <pcl/point_cloud.h>
int main()
{
    using point_cloud_colored = pcl::PointCloud<pcl::PointXYZRGB>;
    //plane is generated from somewhere else and is not important for this issue
    point_cloud_colored::Ptr plane = load_cloud_from_somewhere(); 
    point_cloud_colored::Ptr hull_cloud(new point_cloud_colored);
    pcl::ConcaveHull<point_cloud_colored> chull;
    chull.setInputCloud(plane);
    chull.setAlpha(0.1);
    chull.reconstruct(*hull_cloud);
}

此代码产生以下错误消息:

严重性代码说明项目文件行抑制状态 错误 C1083 无法打开包含文件:'pcl/surface/concave_hull.h':没有这样的文件或目录 farrao_gui C:\Users\ ...\farrao\source\farrao_gui\farrao_gui.cpp 39

我已经尝试通过 vcpkg 重新安装,但没有成功。
有办法解决这个问题吗?

一段时间后,我按照本指南切换到可重入 qhull 版本解决了问题:http://www.qhull.org/html/README_r.txt

您必须将 concave_hull 代码复制到您自己项目中的文件(hpp、h 和 cpp)中。

修复 headers 并删除每个文件中的 #ifdef HAVE_QHULL 并将这段代码添加到您的 hpp 文件中:

extern "C"
{
#include <libqhull_r/qhull_ra.h>
qhT qh_qh;
qhT* qh = &qh_qh;
}

之后:

  • 将每个 qh Makro 替换为 qh->
  • 遍历每个 qh_... 函数并添加 qh 指针作为第一个参数(如果需要)
  • 遍历每个 FOREACHvertex_i_ Makro 并添加 qh 作为第一个参数

这可能不是最佳解决方案,因为这个问题完全超出了我的能力范围,但该算法确实产生了结果。它也可能适用于凸算法(因为它也不包含在 vcpkg 安装中)。
我希望这个答案对遇到类似问题的人有所帮助。