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庫來實現。
相關的文章: