PCL(3): Point Cloud 데이터를 PCD 파일에 쓰기

15062 단어 점운
지난번 책에서 말한 것은 PCD 파일을 점운 데이터로 읽는 것이다. 이번에는 점운 데이터를 어떻게 PCD 파일에 쓰는지 이야기하자.
1. 코드
pcdwrite.cpp의 파일이며 다음 코드가 들어 있습니다.
#include 
#include 
#include 
int
  main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ> cloud;
  // Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  cloud.points.resize (cloud.width * cloud.height);
  for (std::size_t i = 0; i < cloud.points.size (); ++i)
  {
    cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
  }
  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
  std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;

  for (std::size_t i = 0; i < cloud.points.size (); ++i)
    std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
  system("pause");
  return (0);
}

2. 설명
이제 코드를 단계별로 분해합시다.
#include 
#include 

첫 번째 파일은 PCD의 입출력 작업 정의를 포함하는 헤더 파일이고, 두 번째 파일은 pcl::PointXYZ를 포함한 몇 가지 점 유형 구조의 정의를 포함한다.우리가 사용할 구조는 바로 이것이다.
pcl::PointCloud<pcl::PointXYZ> cloud;

우리가 만들 템플릿화된 PointCloud 구조를 설명합니다. 유형의 각 점은 pcl::PointXYZ로 설정됩니다.
// Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  cloud.points.resize (cloud.width * cloud.height);

  for (std::size_t i = 0; i < cloud.points.size (); ++i)
  {
    cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
    cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
  }

PointCloud 구조를 임의 점 값으로 채우고 적절한 매개변수(너비, 높이, is dense)를 설정합니다.
pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);

PointCloud 데이터를 테스트라는 이름으로 디스크에 저장합니다.pcd.pcd 파일
std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;

  for (std::size_t i = 0; i < cloud.points.size (); ++i)
    std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;

생성된 데이터를 표시하는 데 사용합니다.
3. 결과
다음과 같이 표시됩니다.
Saved 5 data points to test_pcd.pcd. 1.28125 577.094 197.938 828.125 599.031 491.375 358.688 917.438 842.563 764.5 178.281 879.531 727.531 525.844 311.281

좋은 웹페이지 즐겨찾기