在PCL中可视化多个模型

时间:2017-07-19 15:32:45

标签: c++ graphics 3d point-cloud-library point-clouds

我正在尝试使用PCL库在单个视图中可视化多个 .ply点云(XYZRGB格式化)。

这就是我所拥有的,可以轻松地将单个模型可视化。但是我需要说同一个模型中的3个,但距离我的视图有不同的距离(比如说中间的距离更远,然后左边的一个更近 - 缩小或放大应用到它们)。

我该怎么做?由于API令人困惑,我在使用PCL时遇到了很大麻烦。如果您知道任何更好的工具,最好使用C / C ++以外的语言,请同时建议。

    #include <iostream>
    //#include <unistd.h>
    #include <pcl/io/pcd_io.h>
    #include <pcl/io/ply_io.h>
    #include <pcl/point_cloud.h>
    #include <pcl/console/parse.h>
    #include <pcl/common/transforms.h>
    #include <pcl/visualization/pcl_visualizer.h>


// Main function
int main(int argc, char **argv)
{
    // Fetch point cloud filename in arguments | Works with PLY files
    std::vector<int> filenames;

    filenames = pcl::console::parse_file_extension_argument(argc, argv, ".ply");

    // Load file | Works with PLY files
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr source_cloud (new pcl::PointCloud<pcl::PointXYZRGB>());

    pcl::io::loadPLYFile(argv[filenames[0]], *source_cloud);


    // Visualization 
    printf("\n Point cloud colors :\n"
        " \t white \t = \t original point cloud \n");

    pcl::visualization::PCLVisualizer viewer(" Point Cloud Datsets Visualizer");
    viewer.setBackgroundColor(0.05, 0.05, 0.05, 0); // Set background to a dark grey                            

                                                    // Define R,G,B colors for the point cloud 
    pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(source_cloud);

    // We add the point cloud to the viewer and pass the color handler 
    viewer.addPointCloud(source_cloud, rgb, "original_cloud");
    viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "original_cloud");

    //******************************
    std::vector<Point, Eigen::aligned_allocator<Point>> points = source_cloud->points;

    //******************************
    while (!viewer.wasStopped()) {   // Display the visualizer until the 'q' key is pressed
        viewer.spinOnce();

    }

    return 0;
} // End main()

enter image description here

0 个答案:

没有答案