PCL1.8创建深度图并保存成png格式图片代码(生成深度图的原理一般就是透视投影或者正交投影)

PCL创建深度图(官网有创建深度图例子)并保存成png格式图片:

主要代码:

//①以下生成点云cloud2在某个角度下的深度图

float angularResolution = (float)(1.0f * (M_PI / 180.0f));  //   1.0 degree in radians
float maxAngleWidth = (float)(360.0f * (M_PI / 180.0f));  // 360.0 degree in radians
float maxAngleHeight = (float)(180.0f * (M_PI / 180.0f));  // 180.0 degree in radians
Eigen::Affine3f sensorPose = (Eigen::Affine3f)Eigen::Translation3f(0.0f, 0.0f, 0.0f);
pcl::RangeImage::CoordinateFrame coordinate_frame = pcl::RangeImage::CAMERA_FRAME;
float noiseLevel = 0.00;
float minRange = 0.0f;
int borderSize = 1;


pcl::RangeImage rangeImage;
rangeImage.createFromPointCloud(*cloud2, angularResolution, maxAngleWidth, maxAngleHeight,
sensorPose, coordinate_frame, noiseLevel, minRange, borderSize);

//②以下保存深度图(保存成png格式)

float* ranges = rangeImage.getRangesArray();
unsigned char* rgb_image = pcl::visualization::FloatImageUtils::getVisualImage(ranges, rangeImage.width, rangeImage.height);
pcl::io::saveRgbPNGFile("saveRangeImageRGB.png", rgb_image, rangeImage.width, rangeImage.height);


就可以把官网例子中显示的深度图,保存成png图片了。


除了pcl可以生成深度图(原理是根据相机姿态的透视投影),根据生成深度图的原理一般就是透视投影或者正交投影,我们也可以利用opengl或者libigl库来实现。


相关的文章:

opencv中3D点根据相机参数投影成2D点+solvePnP函数计算相机姿态+2D坐标到3D(原理是根据相机姿态的透视投影)

看我另一个博客:http://blog.csdn.net/baidu_26408419/article/details/54381756

你可能感兴趣的:(PCL)