kitti-velodye-BIN轉pcl-pcd

 pointcloud2轉kitti同理,喂到ONNX->RTR模型

參考:kitti格式解析

bool KittiParser::getPointcloudAtEntry(
    uint64_t entry, uint64_t* timestamp,
    pcl::PointCloud<pcl::PointXYZI>* ptcloud) {
  // Get the timestamp for this first.
  if (timestamps_vel_ns_.size() <= entry) {
    std::cout << "Warning: no timestamp for this entry!\n";
    return false;
  }

  *timestamp = timestamps_vel_ns_[entry];

  // Load the actual pointcloud.
  const size_t kMaxNumberOfPoints = 1e6;  // From Readme for raw files.
  ptcloud->clear();
  ptcloud->reserve(kMaxNumberOfPoints);

  std::string filename = dataset_path_ + "/" + kVelodyneFolder + "/" +
                         kDataFolder + "/" + getFilenameForEntry(entry) +
                         ".bin";

  std::ifstream input(filename, std::ios::in | std::ios::binary);
  if (!input) {
    std::cout << "Could not open pointcloud file.\n";
    return false;
  }

  // From yanii's kitti-pcl toolkit:
  // https://github.com/yanii/kitti-pcl/blob/master/src/kitti2pcd.cpp
  for (size_t i = 0; input.good() && !input.eof(); i++) {
    pcl::PointXYZI point;
    //開個容器往裏依次一次寫(x,y,z,i)就ok了
    input.read((char*)&point.x, 3 * sizeof(float));
    input.read((char*)&point.intensity, sizeof(float));
    ptcloud->push_back(point);
  }
  input.close();
  return true;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章