读取有组织PCD文件包含RGB信息,将RGB信息存入浮点数数组,通过ImageViewer.showFloatImage将数组传进去,就可以进行可视化。
代码如下:
#ifndef Q_MOC_RUN
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#endif
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/common/time.h> //fps calculations
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/image_viewer.h>
#include <pcl/io/openni_camera/openni_driver.h>
#include <pcl/console/parse.h>
#include <pcl/visualization/mouse_event.h>
#include <vector>
#include <string>
using namespace std;
int
main (int, char ** argv)
{
pcl::PCDReader reader;
pcl::PCLPointCloud2 cloud;
reader.read (argv[1], cloud);
pcl::PointCloud<pcl::PointXYZ> xyz;
pcl::fromPCLPointCloud2 (cloud, xyz);
pcl::visualization::ImageViewer depth_image_viewer_;
float* img = new float[cloud.width * cloud.height];
for (int i = 0; i < static_cast<int> (xyz.points.size ()); ++i)
img[i] = xyz.points[i].z;
depth_image_viewer_.showFloatImage (img,
cloud.width, cloud.height,
std::numeric_limits<float>::min (),
// Scale so that the colors look brigher on screen
std::numeric_limits<float>::max () / 10,
true);
depth_image_viewer_.spin ();
return (0);
}
来源:PCL官方示例