angel_30
angel_30

Reputation: 1

PCL print current FPS

I am using PCL library to visualize a single .ply model. How can I print the Frames per Second (FPS) number shown on the bottom left of the window?

Here is my simple code. We only need to add something like cout<<print(current_fps);

    #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

Upvotes: 0

Views: 683

Answers (1)

eduard626
eduard626

Reputation: 46

You can use getFPS(). The issue was fixed in https://github.com/PointCloudLibrary/pcl/pull/1974

Then you can do something like

std::cout<<viewer.getFPS();

Which will give you a floating point value with the current rendering framerate.

Upvotes: 1

Related Questions