1. 程式人生 > >PCL1.8建立深度圖並儲存成png格式圖片程式碼(生成深度圖的原理一般就是透視投影或者正交投影)

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庫來實現。

相關的文章:

看我另一個部落格:http://blog.csdn.net/baidu_26408419/article/details/54381756