PCL点云处理之IO模块

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LittleLittleFish_xyg/article/details/83016720

PCL点云处理库之I/O模块


I/O模块中共有21个类,28个函数实现,主要用于点云文件输入输出、支持OpenNI的设备源数据获取接口(多种感知设备获取点云图像数据)、数据存储等功能。
1、 pcl::FileReader PCD文件读取

  1. intreadHeader(xxx)读取点云文件头接口函数
  2. read(xxx)读取点云数据到cloud对象中

2、pcl::FileWriter PCD文件存写

  1. write(xxx)点云数据写入到文件中

3、pcl::Grabber 设备驱动接口的基类

  1. connectionregisterCallback(xxx) 获取每张图像或点云数据时,启动此回调
  2. providesCallback(xxx) 判断是否提供回调函数
  3. start(xxx)启动设备,开始传输数据流
  4. stop(xxx)停止设备上的数据传输
  5. getName()获取子类的类名
  6. isRunning()判断流是否正在传输
  7. getFramesPerSecond()获取帧率数据

4、openni_wrapper::OpenNIDevice OpenNI设备的基类,用于获取红外数据、RGB数据、深度图像数据等

  1. findCompatibleImageMode() 查询是否具有对应于图像(彩色图像)模式相匹配的输出模式
  2. findCompatibleDepthMode() 查询深度图像模式相匹配的输出模式
  3. isImageModeSupported() 是否支持 给定的图像(彩色)模式
  4. isDepthModeSupported()是否支持 给定的图像(深度)模式
  5. getDefaultImageMode() 获取默认RGB图像的输出模式
  6. getDefaultDepthMode()深度
  7. getDefaultIRMode()红外
  8. setxxx RGB、深度、红外对应
  9. getImageOutputMode()获取当前RGB图像的输出模式,对应还有深度、红外
  10. setDepthRegistration()设置深度图像与RGB图像对齐
  11. isDepthRegistrationSupported() 判断设备是否支持深度图像与RGB对齐
  12. setSynchronization()设置设备是否同步输出RGB和深度图像
  13. isSynchronizationSupported()判断是否支持同步
  14. isDepthCropped()判断深度图像是否被裁剪
  15. setDepthCropping()打开深度图像的裁剪
  16. getImageFocalLength()获取RGB图像的 焦距长度(像素)
  17. getDepthFacalLength()获取深度图像的焦距长度(像素)
  18. getBaseline() 获取基线长度
  19. startImageStream()启动RGB数据流采集,对应有stop
  20. startDepthStream() 启动深度数据流采集,对应有stop
  21. stratIRStream()启动红外数据流采集,对应有stop
  22. hasImageStream()判断设备是否支持RGB数据采集,对应有深度、红外
  23. isImageStreamRunning()判断设备是否进行数据采集,有RGB、深度、红外
  24. registerImageCallback() RGB数据流的回调函数注册与注销,对应有深度、红外
  25. getSerialNumber() 获取设备序列号
  26. getConnectionString()获取设备连接字符串,如:vendorID/productID@BusID/DeviceID
  27. getVendorName()、getProductName、getVendorID、getProductID获取厂商和产品名字 及ID编号
  28. getBus()获取设备所在USB总线
  29. getAddress()获取设备所在USB地址
  30. setRGBFocalLength()设定RGB焦距大小,对应有深度

5、openni_wrapper::DeviceKinect
6、openni_wrapper::DevicePrimesense
7、openni_wrapper::DeviceXtionPro
以上三个分别封装kinect、Primesense、XtionPro相关设备操作和数据获取
8、openni_wrapper::DeviceONI ONI文件回放虚拟类kinect设备的操作(说实话,不知道在说啥)
9、openni_wrapper::OpenNIDrever 单例模式实现对底层驱动封装,有一个xn::Context对象,提供所有设备使用

  1. updateDeviceList() 枚举设备列表
  2. getNumberDevices()
  3. createVirtualDevice()从ONI文件创建一个虚拟设备
  4. getDeviceByIndex()返回以index为索引的设备
  5. getDebiceBySerialNumber()返回以序列号对应的设备
  6. getDeviceByAddress()根据usb总线、usb地址返回设备
  7. getSerialNumber()
  8. getConnectionString()返回index索引对应的设备连接符
  9. stopAll()停止所有设备
  10. getInstance()获取唯一设备实例
  11. getDeviceType()

10、openni_wrapper::OpneNIException 异常处理

  1. what() 返回异常消息字符串
  2. getFunctionName()异常函数名
  3. getFileName()异常文件名
  4. getLineNumber()异常行号

11、openni_wrapper::Image 图像数据封装基类

  1. isResizingSupported()是否支持尺寸变换
  2. fillRGB()RGB数据填充给定的buf
  3. getEncoding()原始编码方式
  4. fillRaw()原始数据填充buf
  5. fillGrayscale()灰度数据填充buf
  6. getWidth\getHeight
  7. getFrameID()帧号
  8. longgetTimeStamp()时间戳
  9. getMetaData()获取图像原始OpenNI格式数据

12、openni_wrapper::ImageBayerGRBG
13、openni_wrapper::ImageRGB24
14、openni_wrapper::ImageYUV422
以上三个类分别是对原始数据BayerGRBG、RGB24、YUV422到图像转化接口
15、pcl::OpenNIGrabber 对OpenNI设备的实现
16、pcl::PCDReader
17、pcl::PLYReader
分别是PCD、PLY文件的读入接口,父类为FileReader
18、pcl::PCDWriter
19、pcl::PLYWiter
20、pcl::PCLIOException异常类的实现

I/O模块其他关键成员
1、pcl::io::saveOBJFile()
2、pcl::io::loadPCDFile()
3、pcl::io::savePCDFile()
4、pcl::io::savePCDFileASCII()
5、pcl::io::savePCDFileBinary()
6、pcl::throwPCLIOException()
7、pcl::io::savePLYFile()
8、pcl::io::saveRgbPNGFile()
9、pcl::io::saveMonoPNGFile() 保存为灰度图像格式
10、pcl::io::saveShortPNGFile()16位灰度图像格式
11、pcl::io::saveVTKFile()

I/O模块内容还挺多的,从设备、文件格式、读写、同步异步、各种文件格式存储、异常功能等,同时也说明一个共性,所有的IO模块都会包含这些基本的功能,只是具体实现不一样罢了,以后遇到IO模块时候,回来这里查一查就知道实际的功能及作用了,先记录到此。待续

猜你喜欢

转载自blog.csdn.net/LittleLittleFish_xyg/article/details/83016720
今日推荐