【PCL】vs2022配置PCL环境


前言

vs2022 配置PCL环境和路径Python脚本


一、安装教程

看这位兄弟写的就行


二、路径python脚本

因为我和他的版本并不一样,一个一个改太麻烦了,所以特此写了个python脚本。请注意要脚本中OpenNI2位置,修改成你的位置即可。

import os 

# 查找给定路径中的PCL依赖库
def dependency(paths):
    # 将输入的路径字符串按分号分割成列表
    data = paths.split(";")
    arr = []
    for path in data:
        # 检查路径是否存在
        if os.path.exists(path):
            # 遍历路径中的所有文件
            for _, _, files in os.walk(path):
                for file in files:
                    # 如果文件以.lib结尾,则添加到列表中
                    if file.endswith(".lib"):
                        arr.append(file)
        else:
            print("路径不存在")
    # 输出找到的PCL依赖库列表
    print("PCL依赖项:")
    print(";".join(arr))

# 获取包含目录
def includes(path):
    data = ['C:\Program Files\OpenNI2\Include']
    for root, dirs, _ in os.walk(path):
        # 计算当前目录的深度
        depth = root.count(os.sep)-path.count(os.sep)
        if depth == 3:
            if "include" in root or "3rdParty" in root:
                # 确保当前目录是以'includes'结尾
                if "include" == root[-7:]:
                    data.append(root)
                if "pcl" == root[-3:]:
                    data.append(root[:-4].replace(path,"$(PCL_ROOT)"))
        # 如果深度大于3,则停止遍历当前目录            
        if depth > 3:
            del dirs[:]
    print("PCL包含目录:")
    print(";".join(data))

def lib(path):
    data = ['C:\Program Files\OpenNI2\Lib']
    for root, dirs,_ in os.walk(path):
        # 计算当前目录的深度
        depth = root.count(os.sep)-path.count(os.sep)
        if depth == 3 or depth < 2:
            if "lib" in root or "3rdParty" in root:
                # 确保当前目录是以'includes'结尾
                if "lib" == root[-3:]:
                    data.append(root)
        # 如果深度大于3,则停止遍历当前目录            
        if depth > 3:
            del dirs[:]
    print("PCL库目录:")
    print(";".join(data))
    dependency(";".join(data))      


# 主程序入口
if __name__ == "__main__":
    print("\r")
    print("查找PCL依赖库")
    print("ver  1.0.0")
    print("\r")
    while True:
        # 用户输入PCL安装路径
        path = input("请输入PCL安装路径\n")
        # 检查输入路径是否存在
        if os.path.exists(path):
            includes(path)
            lib(path)
        key = input("结束请输入quit,继续请随意按键\r\n")
        if key == "quit":
            break
        
        

运行结果:
在这里插入图片描述

### 如何在 Visual Studio 2022配置 PCL 环境 #### 设置系统环境变量 为了确保程序能够找到所需的动态链接库(DLL),需要设置系统的 `PATH` 变量。这一步骤对于避免找不到 `.dll` 文件的问题至关重要[^1]。 具体来说,在 Windows 系统中,应将 Point Cloud Library (PCL) 安装路径下的各个子目录添加至全局 `PATH` 环境变量: - `(PCL_ROOT)\bin` - `(PCL_ROOT)\3rdParty\FLANN\bin` - `(PCL_ROOT)\3rdParty\VTK\bin` - `(PCL_ROOT)\Qhull\bin` - `(PCL_ROOT)\3rdParty\OpenNI2\Tools` 其中,`(PCL_ROOT)` 表示 PCL 的根安装位置。通过这种方式可以实现对 PCL 库的一次性永久配置,而无需每次启动项目时都手动调整 IDE 内部的调试选项。 #### 创建并配置新项目 当创建一个新的 C++ 控制台应用程序或其他类型的工程来使用 PCL 功能时,需按照如下方式修改项目的属性页面以支持 PCL 开发: ##### 添加头文件包含路径 进入解决方案资源管理器中的任意源代码文件右键菜单 -> 属性 -> 配置属性 -> C/C++ -> 常规 -> 附加包含目录,输入 PCL 头文件所在的位置,例如: ```cpp E:\PCL 1.12.1\include\pcl-1.12; E:\PCL 1.12.1\3rdparty\Eigen\eigen3; ``` 请注意替换上述路径为实际安装路径,并保持分号结尾以便区分不同目录项。 ##### 指定库文件搜索路径 同样是在相同的 "属性" 对话框内切换到 “连接器” 分支下寻找 “常规”,在此处指定额外依赖库目录,即把编译好的静态/共享库所在的文件夹加入进来: ```cpp E:\PCL 1.12.1\lib; ``` 最后还需告知链接器哪些特定版本的 import libraries 是必需的,比如 pcl_common_debug.lib 或者 release 版本对应的 .lib 文件名等。这些通常可以在同一级 lib 文件夹里发现。 ##### 编写测试代码验证集成效果 编写一段简单的C++代码用于加载点云数据集或生成随机点云实例,以此检验是否成功引入了 PCL API 。这里给出一个基本的例子作为参考: ```cpp #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> int main(int argc, char** argv){ pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // Fill in the cloud data... cloud->width = 5; cloud->height = 1; 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 * rand() / (RAND_MAX + 1.0f); } std::cout << "Saved " << cloud->points.size () << " data points to test_pcd.pcd."<<std::endl; if(pcl::io::savePCDFileASCII ("test_pcd.pcd", *cloud)==0) std::cerr<<"Failed saving point cloud!"<<std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值