楼主: dddlly
66 0

[其他] 点云项目环境准备指南 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-12-13
最后登录
2018-12-13

楼主
dddlly 发表于 2025-12-12 11:20:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

点云项目开发环境搭建指南

本文旨在为需要在 Windows 平台上进行点云处理与可视化的开发者提供一套完整的环境配置流程。通过使用 PCL 1.12 库,并结合其内置的 VTK 可视化组件,可实现点云数据的加载、显示及后续算法开发。该环境适用于毕业设计、科研实验或工程原型开发。

一、PCL 1.12 的安装

前往 PCL 官方下载页面获取适用于 Windows 系统的预编译安装包:

  • 下载地址:PCL Downloads

建议在安装过程中采用默认路径以避免路径错误问题(示例路径如下):

C:\Program Files\PCL 1.12.1

安装完成后,虽然可以将 PCL 的 bin 目录添加至系统 PATH 环境变量,但为了保持系统环境的整洁性,本文推荐不修改系统 PATH,而是通过其他方式管理动态链接库的加载。

二、依赖库配置

VTK 支持:PCL 安装包已集成 VTK 模块,无需额外安装即可直接用于点云渲染和可视化功能。

OpenNI2 驱动(可选):若计划连接 Kinect 或其他支持 OpenNI2 协议的深度相机以实现实时点云采集,则需单独安装 OpenNI2 运行时。PCL 提供了 MSI 安装程序,应手动运行完成安装。
安装路径参考:

C:\Program Files\OpenNI2\Redist

如当前阶段暂不涉及硬件接入,可在 CMake 构建时关闭 OpenNI2 支持选项,以简化编译过程:

set(PCL_ENABLE_OPENNI OFF)

三、CMake 工程设置

创建一个 CMakeLists.txt 文件作为项目构建脚本,内容结构如下:

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(pcl_test)

# 查找 PCL
find_package(PCL 1.12 REQUIRED)

# 包含 PCL 头文件和库
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

# 添加可执行文件
add_executable(pcl_test main.cpp)

# 强制控制台程序
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE")
set_target_properties(pcl_test PROPERTIES WIN32_EXECUTABLE OFF)

# 链接 PCL 库
target_link_libraries(pcl_test ${PCL_LIBRARIES})

# 可选:将 DLL 复制到 lib 文件夹
set(DLL_OUTPUT_DIR "${CMAKE_BINARY_DIR}/lib")
file(MAKE_DIRECTORY ${DLL_OUTPUT_DIR})
file(GLOB PCL_DLLS "C:/Program Files/PCL 1.12.1/bin/*.dll")
file(COPY ${PCL_DLLS} DESTINATION ${DLL_OUTPUT_DIR})
file(GLOB VTK_DLLS "C:/Program Files/PCL 1.12.1/3rdParty/VTK/bin/*.dll")
file(COPY ${VTK_DLLS} DESTINATION ${DLL_OUTPUT_DIR})

注意事项

  • 所有必要的 DLL 文件建议集中存放于指定目录中,便于管理和部署:
    build/lib
  • 可通过调用特定代码段,在程序启动时自动加载 lib 目录下的动态库文件:
    SetDllDirectory("lib")

此方法可有效避免将 PCL 的 bin 路径写入系统环境变量,从而防止对其他项目的潜在干扰。

四、示例代码编写

创建 main.cpp 文件并填入以下测试代码,用于验证环境是否正确配置:

#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <windows.h>

int main()
{
    // 设置 DLL 搜索目录为 exe 所在目录下的 lib 文件夹
    wchar_t exePath[MAX_PATH];
    GetModuleFileNameW(NULL, exePath, MAX_PATH);
    std::wstring path(exePath);
    path = path.substr(0, path.find_last_of(L"\\") + 1) + L"lib";
    SetDllDirectoryW(path.c_str());

    // 创建点云
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    cloud->width = 5;
    cloud->height = 1;
    cloud->points.resize(cloud->width * cloud->height);
    for (auto& point : cloud->points)
    {
        point.x = 1024 * rand() / (RAND_MAX + 1.0f);
        point.y = 1024 * rand() / (RAND_MAX + 1.0f);
        point.z = 1024 * rand() / (RAND_MAX + 1.0f);
    }

    // 可视化
    pcl::visualization::PCLVisualizer viewer("PCL Viewer");
    viewer.addPointCloud(cloud, "sample cloud");
    while (!viewer.wasStopped())
    {
        viewer.spinOnce(100);
    }

    return 0;
}

该示例包含基本的点云对象创建、属性初始化以及使用 PCLVisualizer 进行简单渲染的功能,可用于初步验证可视化模块是否正常工作。

五、项目编译与执行流程

在项目根目录下创建输出文件夹用于存放可执行文件:

build

构建生成的 exe 文件存放位置示意:

mkdir build
cd build
cmake ..
cmake --build . --config Release

运行方式说明

  • 若所有依赖 DLL 已复制到 exe 所在目录,可直接双击运行程序;
  • 或在 main 函数开始处插入如下语句,实现从子目录加载库文件:
    SetDllDirectory("lib")

六、总结与后续方向

至此,基于 PCL + VTK + (可选)OpenNI2 的点云开发环境已成功部署。关键要点包括:

  • DLL 文件统一放置于独立文件夹中管理,推荐路径为:
    lib
  • 通过程序内加载机制或启动脚本引入依赖库,而非修改系统 PATH:
    SetDllDirectory

当前环境已支持:

  • 点云数据的读取与保存(PCD 格式等)
  • 基础三维可视化功能
  • 滤波、分割、配准等常见点云处理算法开发
  • 未来可扩展接入 RealSense、Kinect 等深度相机设备

本配置方案兼顾稳定性与可移植性,适合进一步开展点云相关的研究与应用开发。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:destination DEFINITIONS Properties definition directory

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-24 17:44