Photoneo相机-pcl点云处理

Photoneo相机-输出格式为:

.praw

PCL的CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(PCL_demo1)
 
set(CMAKE_CXX_STANDARD 14)

find_package(OpenCV REQUIRED)
#find_package(PCL CONFIG REQUIRED)
#/media/spple/新加卷/Dataset/pcl-master/install/share/pcl-1.9
set(PCL_DIR "/media/spple/新加卷/Dataset/pcl-master/install/share/pcl-1.9/")
find_package(PCL REQUIRED)
 
include_directories(${PCL_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(
        ${OpenCV_INCLUDE_DIRS}
)
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")
 
add_executable(PCL_demo1 main_hough.cpp)
target_link_libraries (PCL_demo1 ${PCL_LIBRARIES})
target_link_libraries(PCL_demo1 ${OpenCV_LIBS})

SDK下载地址:

https://www.photoneo.com/3d-scanning-software/

下载最新版SDK1.2.7

https://photoneo.com/files/installer/PhoXi/1.2.rc/PhotoneoPhoXiControlInstaller-1.2.7-win64.exe

 

笔记本电脑上需要安装VS2015-updata3以上 or VS2017版本

本次教程我们使用VS2015

 

下载后进行安装,该SDK是默认安装,不用选择安装地址,

默认安装位置为:

C:\Program Files\PhotoneoPhoXiControl

 

 

关于C++的函数指南位置在:

C:\Program Files\PhotoneoPhoXiControl\API\API_Manual.html

 

关于三个C++的例子位置在:

C:\Program Files\PhotoneoPhoXiControl\API\examples\CPP

 

以上是我们接下来所需要的

 

 

打开VS2015,新建空工程:

 

 

修改编译类型位X64---很重要

 

 

 

如果你的工程没有X64的选项,那么新建

在Type中选择x64,在Copy中选择x86即可

 

接下来添加一个main.cpp

 

然后配置相机环境

右键工程的Properties

 

 

 

 

 

 

 

 

 

 

 

 

 

在这里我们为了方便把Release和Debug都配置好

我们先配置Debug

Lib文件:

C:\Program Files\PhotoneoPhoXiControl\API\lib\PhoXi_API_msvc14_Debug_1.2.7.lib

 

Include文件:

C:\Program Files\PhotoneoPhoXiControl\API\include

 

复制代码示例:

FullAPIExample.cpp 到 main.cpp

因为程序执行完会闪退cmd,我们加入一句话:getchar();cmd等待

int main(int argc, char *argv[])

{

    FullAPIExample Example;

    Example.Run();

    getchar();

    return 0;

}

 

 

 

 

编译程序

编译成功

 

打开工程文件,找到运行的.exe

F:\Dataset\photoneo\demo1\Project1\x64\Debug

将SDK对应的dll,放入exe同目录下

我们这里应该放入的是:

PhoXi_API_msvc14_Debug_1.2.7.dll

等会儿Release也是同样的情况,把PhoXi_API_msvc14_Release_1.2.7.dll放入Release模式下编译的exe同目录下

 

如果不放入dll,也应该在path环境变量中建立路径---后面会说这种方法

C:\Program Files\PhotoneoPhoXiControl\API\bin

 

不然会出现错误:

 

放入后运行程序:

 

4种连接方式,我们只有一个驱动,却num为0

故选择方式2,然后输入0

程序会按照示例代码输出很多信息

 

 

 

 

 

 

 

 

 

 

 

以上就是Debug模式下的示例

 

Release下也是一配置:

 

Lib:

C:\Program Files\PhotoneoPhoXiControl\API\lib\PhoXi_API_msvc14_Release_1.2.7.lib

 

Include:

C:\Program Files\PhotoneoPhoXiControl\API\include

 

然后记得放入Dll和Release的exe同目录下:

PhoXi_API_msvc14_Release_1.2.7.dll

 

如果你觉得每次放入不同dll进入不同目录这种方式比较麻烦,你可以直接新建path环境变量路径:

 

这样exe程序运行时候就能自动找到不同的dll了

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python-PCL是一个Python绑定库,它提供了对PointCloud库的访问。点网格化算法是将点数据进行处理后生成一张网格表面的算法。网格化可以使点数据更容易可视化、分析和处理。Python-PCL网格化算法可以将点数据分割成均匀分布的三角形网格,并构建一个平滑的网格表面。 Python-PCL网格化算法的主要步骤包括: 1.加载点数据并将其转换为PointNormal格式,以便于法线估计和网格化操作。 2.对点数据进行法线估计。该过程使用一种求点曲率的技术,将每个点的法线计算出来,并保存在其对应的点中。 3.将法线信息与点数据结合,构建一个SurfaceReconstruction3D对象来执行网格化操作。在这个过程中,算法使用一个梯度下降优化算法,将点数据映射到一个均匀分布的三角形网格上。优化约束条件限制每个三角形的边长,使网格表面更加平滑。 4.最后根据三角形间的相交情况对网格进行修复,并输出网格数据。在这个过程中,算法检查每个三角形是否与其他三角形相交,并尝试通过联通、压缩网格等修复操作,使网格曲面更加平滑。 Python-PCL网格化算法是一种实现点数据可视化、处理和分析的有效工具。在3D打印、机器人视觉和虚拟现实等领域都有广泛的应用。 ### 回答2: Python-PCL是一个Python的PCL(点库)封装库,允许用户在Python中使用PCL中的众多算法。点网格化算法就是Python-PCL之中的一个非常重要的算法。 点网格化算法是将点数据转化为网格表示的过程,在这个过程中,将点数据转换为一个等间距的二元矩阵表示。由于点数据是一个由众多点组成的体,因此,这个矩阵是被空缺的网格填充而成的。在这个过程中,点数据通过多次计算,不断地从自由形状变为一种规则形状,从而提高点数据的处理效率。 点网格化算法是通过点曲面重构的算法实现的。曲面重构算法能够将点数据转化为一个规则的几何模型,从而为相关应用提供了非常大的便捷,因此,点网格化算法的应用非常广泛,例如:机器视觉,三维打印等方面。在Python-PCL的应用中,点网格化算法的实现基于VTK(Visualization ToolKit)工具包,通过VTK包中的vtkPolyDataMapper类实现点网格化。 点网格化算法的实现需要通过多次迭代计算,使点数据沿着均匀分布的空间方向发生变化,从而最终能够得到一种规则的几何形状。在实际应用中,点数据可能会受到很多干扰,例如:噪音、数据不完整等因素,这对点网格化算法的计算效率提出了非常高的要求,因此,Python-PCL提供了一系列优化的算法来满足实际应用的需求。 ### 回答3: Python-PCL是Point Cloud Library的Python封装库,提供了一组Python模块,可以在Python中使用PCL的功能。PCL是一个C++库,是开发点处理算法和应用的一流工具,具有许多点处理功能,如配准、滤波、分割、聚类、特征提取和识别等。 点网格化是一种将点转化为网格模型的技术。在点数据中,所有的点都是离散的,而在网格模型中,点是有序的,因此点网格化是将离散的点数据转换为有序的网格数据的过程。 Python-PCL库提供了函数pcl.surface包来执行点到三角网格转换,使用点同步方法定义的半径搜索方式构建三角网格。 下面是一个简单的例程,它将点转换为三角网格: ```python import pcl cloud = pcl.PointCloud.PointXYZRGB() mesh = cloud.make_mesh_cuboid() print('PointCloud before meshing') print(cloud) print('PointCloud after meshing') print(mesh.cloud) print(mesh.polygons) ``` 该例程首先定义了一个PointCloud对象,然后使用make_mesh_cuboid()函数将其转换为三角网格。最后,程序将输出PointCloud以及转换后的mesh。由于make_mesh_cuboid()函数是在一个立方体形状上生成网格对象,因此输出结果可能会有所不同。 总体而言,Python-PCL是一个非常强大的工具,它为Python程序员提供了使用点数据处理的功能。尤其是对于点网格化算法,Python-PCL提供了一个方便的方式来将点数据转换为有序的网格数据。这个库是在点领域做开发非常有帮助的,它为点的开发和应用提供了大量的可靠和高效的处理工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值