kitti 07 シーケンス内の点群の特定のフレームに点がいくつあるかを数え、点群のフレームをロードするのにどれくらい時間がかかるかを数えます。

kitti オドメーター 07 シーケンス (bin から pcd に変換) の 10 フレームの点群をテストするだけで、vs2017 の実行出力結果が得られます。

now count the pcd filename is 000000.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000000.pcd
read this frame pcd costtime is 645ms
read this frame pcd points is 122627 points
now time_average is 645ms
now count the pcd filename is 000001.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000001.pcd
read this frame pcd costtime is 658ms
read this frame pcd points is 122620 points
now time_average is 651.5ms
now count the pcd filename is 000002.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000002.pcd
read this frame pcd costtime is 652ms
read this frame pcd points is 122663 points
now time_average is 651.667ms
now count the pcd filename is 000003.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000003.pcd
read this frame pcd costtime is 643ms
read this frame pcd points is 122582 points
now time_average is 649.5ms
now count the pcd filename is 000004.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000004.pcd
read this frame pcd costtime is 649ms
read this frame pcd points is 122505 points
now time_average is 649.4ms
now count the pcd filename is 000005.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000005.pcd
read this frame pcd costtime is 643ms
read this frame pcd points is 122527 points
now time_average is 648.333ms
now count the pcd filename is 000006.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000006.pcd
read this frame pcd costtime is 655ms
read this frame pcd points is 122371 points
now time_average is 649.286ms
now count the pcd filename is 000007.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000007.pcd
read this frame pcd costtime is 651ms
read this frame pcd points is 122301 points
now time_average is 649.5ms
now count the pcd filename is 000008.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000008.pcd
read this frame pcd costtime is 652ms
read this frame pcd points is 122298 points
now time_average is 649.778ms
now count the pcd filename is 000009.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000009.pcd
read this frame pcd costtime is 652ms
read this frame pcd points is 122336 points
now time_average is 650ms
now count the pcd filename is 000010.pcd
now count the pcd filepath is C:/PCLproject/bin2pcd2/velodyne/pcd/000010.pcd
read this frame pcd costtime is 646ms
read this frame pcd points is 122475 points
now time_average is 649.636ms

プログラムコード test_timecost.cpp

#include <iostream>
#include<sstream>
#include<stdlib.h> //rand()头文件
#include<pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/ModelCoefficients.h>
#include <pcl/sample_consensus/method_types.h>   //随机参数估计方法
#include <pcl/sample_consensus/model_types.h>    //模型定义
#include <pcl/segmentation/sac_segmentation.h>   //RANSAC分割
#include <pcl/filters/extract_indices.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/pcl_visualizer.h>

#include <pcl/console/time.h>

//自己写一个小代码,统计一下kitti 07 序列里面某一帧点云大概有多少个点,
//然后加载一帧点云花费多少时间

using namespace std;

int
   main()
{
    
    
	// ----------------------------加载点云-----------------------------
	// 定义一个对象,用来加载点云,然后输出点的个数
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

	double time_cost_sum = 0;
	double time_average = 0;

	for (int i = 0; i <= 10; i++) {
    
    
		stringstream ss;
		ss << setw(6) << setfill('0') << i;
		//在循环内临时存放文件名
		string str;
		ss >> str;

		str = str + ".pcd";

		cout << "now count the pcd filename is " << str << endl;

		string filepath = "C:/PCLproject/bin2pcd2/velodyne/pcd/" + str;

		cout << "now count the pcd filepath is " << filepath << endl;

		// 计算加载点云消耗的时间, 为了尽量客观,不使用if 进行是否读取成功的检验
		pcl::console::TicToc time1;
		time1.tic();

		pcl::io::loadPCDFile<pcl::PointXYZ>(filepath, *cloud);

		double temp = time1.toc();

		cout << "read this frame pcd costtime is " << temp << "ms" << endl;

		cout << "read this frame pcd points is " << cloud->size() << " points" << endl;

		time_cost_sum += temp;
		// 因为帧是从 00000 开始,i也从0开始,计算平均时候需要注意
		time_average = time_cost_sum / (i + 1);

		cout << "now time_average is " << time_average << "ms" << endl;



		
	
	}

	//pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	//if (pcl::io::loadPCDFile<pcl::PointXYZ>("C:/PCLproject/bin2pcd2/velodyne/pcd/000020.pcd", *cloud) == -1)
 //	//if (pcl::io::loadPCDFile<pcl::PointXYZ>("C:/datapcl/pcd/table_scene_lms400.pcd", *cloud) == -1)

	//{
    
    
	//	PCL_ERROR("读取源标点云失败 \n");
	//	return (-1);
	//}
	//cout << "从点云中读取 " << cloud->size() << " 个点" << endl;


	return (0);
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(test_timecost)

find_package(PCL 1.5 REQUIRED)

include_directories(${
    
    PCL_INCLUDE_DIRS})
link_directories(${
    
    PCL_LIBRARY_DIRS})
add_definitions(${
    
    PCL_DEFINITIONS})

add_executable (test_timecost test_timecost.cpp)
target_link_libraries (test_timecost ${
    
    PCL_LIBRARIES})

おすすめ

転載: blog.csdn.net/qq_46084757/article/details/127872258