参考文章:
(1)Class pcl::FileReader
类FileReader定义了PCD文件的读取接口,主要用做其他读取类的父类。
(2)Class pcl::FileWriter
类FileWriter 与 FileReader对应,是写人PCD文件的类接口定义,可以作为其它写入类的父类。
(3)Class pcl::Grabber
类Grabber为PCL1.X对应的设备驱动接口的基类定义。
(4)Class openni_wrapper::OpenNIDevice
类OpenNIDevice定义OpenNI设备的基类,继承该基类可以实现不同的OpenNI设备子类,用于获取包括红外数据、RGB数据、深度图像数据等。
(5)Class openni_wrapper::DeviceKinect
(6)Class openni_wrapper::DevicePrimesense
(7)Class openni_wrapper::DeviceXtionPro
以上3个类分别封装了Kinect,Primesense,XtionPro相关设备操作和数据获取操作实现,其详细接口参考其父类OpenNIDevice的关键函数说明。
(8)Class openni_wrapper::DeviceONI
封装了利用ONI文件回放虚拟类kinect设备的操作和数据获取操作实现,其详细接口参考其父类OpenNIDevice的关键函数说明。
(9)Class openni_wrapper::OpenNIDriver
类OpenNIDriver采用单例模式实现对底层驱动的封装,里面包含一xn::Context对象,提供给所有设备使用。该类提供了枚举和访问所有设备的方法实现。
(10)Class openni_wrapper::OpenNIException
类OpenNIException封装一般的异常处理实现。
(11)Class openni_wrapper::Image
类Image是简单的图像数据封装基类。
(12)Class openni_wrapper::ImageBayerGRBG
(13)Class openni_wrapper::ImageRGB24
(14)Class openni_wrapper::ImageYUV422 Class Reference
以上3个类分别实现了对原始数据 BayerGRBG ,RGB24、YUV422到图像转化接口,详细参考其父类关键函数说明。
(15)Class pcl::OpenNIGrabber
类OpenNIGrabber 实现对OpenNI设备(例如Primesense PSDK,MicrosoftKinect,Asus XTion Pro/Live)数据的采集接口,详细参考其父类Grabber 关键函数说明。
(16)Class pcl::PCDReader
(17)Class pcl::PLYReader
以上两个类分别是PCD、PLY文件格式读入接口的实现,详细参考其父类pcl: :FileReader。
(18)Class pcl::PLYWriter
(19)Class pcl::PCDWriter
以上两个类分别是PCD、PLY文件格式写出接口的实现,详细参考其父类pcl: :FileWriter。
(20)Class pcl::io::IOException
类pcl::io::IOException 是I/O相关的异常处理接口实现,详细参考其父类PCLEx-ception。
(21)I/O模块其他关键成员
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z _
SIZE 4 4 4 1
TYPE F F F U
COUNT 1 1 1 4
WIDTH 112099
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 112099
DATA binary
I:可表示int8,int16,int32。
U:可表示uint8,unit16,uint32。
F:表示float(上图所用的为浮点类型)。
cmake_minimum_required(VERSION 2.6)
project(pcd)
find_package(PCL 1.10 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd pcd.cpp)
target_link_libraries (pcd ${PCL_LIBRARIES})
install(TARGETS pcd RUNTIME DESTINATION bin)
#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int main()
{
pcl::PCDReader reader;
pcl::PCLPointCloud2 org;
pcl::io::loadPCDFile("../pcdfile.pcd",org);
for(auto &f : org.fields)
cout << f.name;
pcl::PointCloud<pcl::PointXYZ> cloud;
pcl::fromPCLPointCloud2<pcl::PointXYZ>(org,cloud);
pcl::PCDWriter writer;
pcl::io::savePCDFileBinaryCompressed("../savepcdfile.pcd",cloud);
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer);
viewer->setWindowName("PCDFile");
viewer->addPointCloud(cloud.makeShared());
while (!viewer->wasStopped())
{
viewer->spinOnce(100);
}
return 0;
}
典型的PLY文件结构:
ply
format ascii 1.0
element vertex 14806
property float x
property float y
property float z
property float nx
property float ny
property float nz
element face 0
property list uchar int vertex_indices
end_header
0.91441 -0.5338 0.822624 -0.0442205 -0.930906 0.362575
0.933494 -0.5228 0.820276 0.073409 -0.981856 0.174844
...
cmake_minimum_required(VERSION 2.6)
project(ply)
find_package(PCL 1.10 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(ply ply.cpp)
target_link_libraries (ply ${PCL_LIBRARIES})
install(TARGETS ply RUNTIME DESTINATION bin)
#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/io/ply_io.h>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int main()
{
pcl::PCLPointCloud2 cloud;
pcl::io::loadPLYFile("../ply.ply",cloud);
pcl::PLYReader reader;
pcl::PLYWriter writer;
pcl::PointCloud<pcl::PointXYZ> cloud1;
pcl::fromPCLPointCloud2<pcl::PointXYZ>(cloud,cloud1);
pcl::io::savePLYFile("saveply.ply",cloud,Eigen::Vector4f::Zero (),
Eigen::Quaternionf::Identity (),
true);
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer);
viewer->setWindowName("PLYFile");
pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color(cloud1.makeShared(), "y");
viewer->addPointCloud(cloud1.makeShared(),color);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,2);
while(!viewer->wasStopped())
viewer->spinOnce(100);
return 0;
}
mtllib cube.mtl
g default
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
vt 0.001992 0.001992
vt 0.998008 0.001992
vt 0.001992 0.998008
vt 0.998008 0.998008
...
mtllib:代表材质库,通常指向到某个mtl文件
其他参考:
cmake_minimum_required(VERSION 2.6)
project(obj)
find_package(PCL 1.10 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(obj obj.cpp)
target_link_libraries (obj ${PCL_LIBRARIES})
install(TARGETS obj RUNTIME DESTINATION bin)
#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/io/obj_io.h>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int main()
{
pcl::PolygonMesh mesh;
pcl::PCLPointCloud2 cloud;
pcl::TextureMesh tmesh;
#if 0
pcl::io::loadOBJFile("../obj.obj",cloud);
pcl::io::loadOBJFile("../obj.obj",mesh);
pcl::io::loadOBJFile("../obj.obj",tmesh);
#else
pcl::OBJReader objreader;
objreader.read("../obj.obj",cloud);
objreader.read("../obj.obj",mesh);
objreader.read("../obj.obj",tmesh);
#endif
pcl::io::saveOBJFile("../saveobj.obj",mesh);
pcl::PointCloud<pcl::PointXYZ> cloudxyz;
pcl::fromPCLPointCloud2<pcl::PointXYZ>(cloud,cloudxyz);
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer);
viewer->setWindowName("OBJFile");
pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color(cloudxyz.makeShared(), "z");
viewer->addPointCloud(cloudxyz.makeShared(),color);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,2);
viewer->addPolygonMesh(mesh);
while(!viewer->wasStopped())
viewer->spinOnce(100);
return 0;
}
# vtk DataFile Version 2.0
vtk output
ASCII
DATASET POLYDATA
POINTS 2312 float
0.263107 0 0.425176 0.33131 0 0.374478 0.3942 0 0.312962
0.43731 0 0.242405 0.472045 0 0.1845 0.493143 0 0.0825238
cmake_minimum_required(VERSION 2.6)
project(vtkfile)
find_package(PCL 1.10 REQUIRED)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
link_directories(${VTK_LIBRARY_DIRS})
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(vtkfile vtkfile.cpp)
target_link_libraries (vtkfile ${PCL_LIBRARIES} ${VTK_LIBRARIES})
target_link_libraries (vtkfile ${VTK_LIBRARIES})
install(TARGETS vtkfile RUNTIME DESTINATION bin)
#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/io/vtk_io.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/obj_io.h>
using namespace std;
int main()
{
pcl::PCLPointCloud2 cloud;
pcl::PolygonMesh mesh,mesh1,mesh2;
#if 0
pcl::io::loadPolygonFile("../vtk.vt",mesh);
#else
pcl::io::loadPolygonFileVTK("../vtk.vtk",mesh);
pcl::io::loadPolygonFileVTK("../vtk.vtk",mesh2);
#endif
pcl::PointCloud<pcl::PointXYZ> cloudxyz;
pcl::fromPCLPointCloud2<pcl::PointXYZ>(mesh.cloud,cloudxyz);
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer);
viewer->setWindowName("VTKFile");
pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color(cloudxyz.makeShared(),"y");
viewer->addPointCloud(cloudxyz.makeShared(),color);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,3);
viewer->addPolygonMesh(mesh);
while(!viewer->wasStopped())
viewer->spinOnce(100);
return 0;
}
#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/png_io.h>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int main()
{
pcl::PCDReader reader;
pcl::PCLPointCloud2 org;
pcl::io::loadPCDFile("../cow.pcd",org);
for(auto &f : org.fields)
cout << f.name << endl;
pcl::PointCloud<pcl::PointXYZ> cloud;
pcl::fromPCLPointCloud2<pcl::PointXYZ>(org,cloud);
pcl::io::savePNGFile("../savepng.png",cloud,"rgb");
pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color(cloud.makeShared(), "z");
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer);
viewer->setWindowName("savePNG");
viewer->addPointCloud(cloud.makeShared(),color);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,2);
while(!viewer->wasStopped())
viewer->spinOnce(100);
return 0;
}}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务