PCL 포인트 클라우드 라이브러리에서 자주 사용하는 팁
4716 단어 기교를 쓰다
// ASSIC( )
pcl::PCDWriter writer;
writer.write(s_pcd,laserCloudIn);
//bin ( )
pcl::io::savePCDFileBinary(s_pcd, *cloud);
2. 점 구름이 X, Y, Z축에 있는 극값 찾기
pcl::PointXYZ minPt, maxPt;
pcl::getMinMax3D (*cloud, minPt, maxPt);
3. 저장할 점의 인덱스를 알면 원점 구름에서 새 점 구름으로 어떻게 복사합니까?
pcl::PointCloud<:pointxyz>::Ptr cloudOut(new pcl::PointCloud<:pointxyz>);
std::vector indexs = { 1, 2, 5 };
pcl::copyPointCloud(*cloud, indexs, *cloudOut);
4. 점구름에서 어떻게 점을 삭제하고 추가합니까?
pcl::PointCloud<:pointxyz>::iterator index = cloud->begin();
cloud->erase(index);//
index = cloud->begin() + 5;
cloud->erase(index);// 5
pcl::PointXYZ point = { 1, 1, 1 };
// 5 ,
cloud->insert(cloud->begin() + 5, point);
cloud->push_back(point);//
5. 점운에 대해 전역 또는 국부 변환을 어떻게 하는가
//
pcl::transformPointCloud(*cloud,*transform_cloud1,transform_1);
//
// , , , 。
pcl::transformPointCloud(*cloud,pcl::PointIndices indices,*transform_cloud1,matrix);
6. 두 점 클라우드 필드 링크(두 점 클라우드 크기는 같아야 함)
pcl::PointCloud<:pointnormal>::Ptr cloud_with_nomal (new pcl::PointCloud<:pointnormal>);
pcl::concatenateFields(*cloud,*cloud_normals,*cloud_with_nomal);
7. 점 구름에서 잘못된 점을 삭제하는 방법
vector indices;
pcl::removeNaNFromPointCloud(*cloud,*output,indices);
8. 질량 중심 계산
Eigen::Vector4f centroid;//
pcl::compute3DCentroid(*cloud_smoothed,centroid); //
9. 점운의 법방향량을 계산한다
pcl::NormalEstimation<:pointxyz pcl::normal=""> ne;
pcl::PointCloud<:normal>::Ptr pcNormal(new pcl::PointCloud<:normal>);
pcl::search::KdTree<:pointxyz>::Ptr tree(new pcl::search::KdTree<:pointxyz>);
tree->setInputCloud(inCloud);
ne.setInputCloud(inCloud);
ne.setSearchMethod(tree);
ne.setKSearch(50);
//ne->setRadiusSearch (0.03);
ne.compute(*pcNormal);
10. 점운을 추출하는 경계
pcl::PointCloud<:boundary> boundaries; // pcl::BoundaryEstimation<:pointxyz pcl::normal="" pcl::boundary=""> boundEst; //
pcl::NormalEstimation<:pointxyz pcl::normal=""> normEst; //
pcl::PointCloud<:normal>::Ptr normals(new pcl::PointCloud<:normal>); //
pcl::PointCloud<:pointxyz>::Ptr cloud_boundary (new pcl::PointCloud<:pointxyz>);
normEst.setInputCloud(pcl::PointCloud<:pointxyz>::Ptr(cloud));
normEst.setRadiusSearch(reforn); //
normEst.compute(*normals); // normals
boundEst.setInputCloud(cloud); //
boundEst.setInputNormals(normals); // ,
boundEst.setRadiusSearch(re); //
boundEst.setAngleThreshold(M_PI/4); //
boundEst.setSearchMethod(pcl::search::KdTree<:pointxyz>::Ptr (new pcl::search::KdTree<:pointxyz>)); // KdTree
boundEst.compute(boundaries); // boundaries
11.k 근린과 반경 검색
pcl::KdTreeFLANN<:pointxyz>kdtree; // kdtree
kdtree.setInputCloud(cloud); //
pcl::PointXYZ searchPoint; //
//K
int K = 10; //
vectorpointIdxNKNSearch(K); //
vectorpointNKNSquaredDistance(K);//
kdtree.nearestKSearch(searchPoint, K, pointIdxNKNSearch, pointNKNSquaredDistance)
//
std::vector pointIdxRadiusSearch;
std::vector pointRadiusSquaredDistance;
float radius; //
kdtree.radiusSearch(searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance);
12. 새로운 점 클라우드 클래스 추가
// PCL
#include
//
// :
#include
//
struct PointXYZIR
{
PCL_ADD_POINT4D
float intensity;
uint16_t ring; ///< laser ring number
EIGEN_MAKE_ALIGNED_OPERATOR_NEW // new
} EIGEN_ALIGN16; // SSE
POINT_CLOUD_REGISTER_POINT_STRUCT(PointXYZIR, (float, x, x)(float, y, y)(float, z, z)(float, intensity, intensity)(uint16_t, ring, ring))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PCL 포인트 클라우드 라이브러리에서 자주 사용하는 팁1. 포인트 클라우드 데이터 저장 2. 점 구름이 X, Y, Z축에 있는 극값 찾기 3. 저장할 점의 인덱스를 알면 원점 구름에서 새 점 구름으로 어떻게 복사합니까? 4. 점구름에서 어떻게 점을 삭제하고 추가합니까?...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.