pcl常用小知識

2021-09-18 04:13:15 字數 3986 閱讀 5576

pcl中計算程式執行時間有很多函式,其中利用控制台的時間計算是:

首先必須包含標頭檔案#include,其次,pcl::console::tictoc time; time.tic(); +程式段 + cout<#include #include pcl::pointcloud::ptr cloudpointer(new pcl::pointcloud);

pcl::pointcloudcloud;

cloud = *cloudpointer;

cloudpointer = cloud.makeshared();

#include #include #include pcl::pointcloud::ptr cloud;

cloud = pcl::pointcloud::ptr (new pcl::pointcloud);

pcl::io::loadpcdfile("your_pcd_file.pcd", *cloud);

pcl::pointxyz minpt, maxpt;

pcl::getminmax3d (*cloud, minpt, maxpt);

#include #include #include #include pcl::pointcloud::ptr cloud(new pcl::pointcloud);

pcl::io::loadpcdfile("c:\office3-after21111.pcd", *cloud);

pcl::pointcloud::ptr cloudout(new pcl::pointcloud);

std::vectorindexs = ;

pcl::copypointcloud(*cloud, indexs, *cloudout);

#include #include #include #include pcl::pointcloud::ptr cloud(new pcl::pointcloud);

pcl::io::loadpcdfile("c:\office3-after21111.pcd", *cloud);

pcl::pointcloud::iterator index = cloud->begin();

cloud->erase(index);//刪除第乙個

index = cloud->begin() + 5;

cloud->erase(cloud->begin());//刪除第5個

pcl::pointxyz point = ;

//在索引號為5的位置1上插入一點,原來的點後移一位

cloud->insert(cloud->begin() + 5, point);

cloud->push_back(point);//從點雲最後面插入一點

std::cout << cloud->points[5].x;//輸出1

如果刪除的點太多建議用上面的方法拷貝到新點雲,再賦值給原點雲,如果要新增很多點,建議先resize,然後用迴圈向點雲裡的新增。

#include #include #include #include #include pcl::pointcloud::ptr cloud (new pcl::pointcloud);

pcl::io::loadpcdfile("path/.pcd",*cloud);

//全域性變化

//構造變化矩陣

eigen::matrix4f transform_1 = eigen::matrix4f::identity();

float theta = m_pi/4; //旋轉的度數,這裡是45度

transform_1 (0,0) = cos (theta); //這裡是繞的z軸旋轉

transform_1 (0,1) = -sin(theta);

transform_1 (1,0) = sin (theta);

transform_1 (1,1) = cos (theta);

// transform_1 (0,2) = 0.3; //這樣會產生縮放效果

// transform_1 (1,2) = 0.6;

// transform_1 (2,2) = 1;

transform_1 (0,3) = 25; //這裡沿x軸平移

transform_1 (1,3) = 30;

transform_1 (2,3) = 380;

pcl::pointcloud::ptr transform_cloud1 (new pcl::pointcloud);

pcl::transformpointcloud(*cloud,*transform_cloud1,transform_1); //不言而喻

//區域性

pcl::transformpointcloud(*cloud,pcl::pointindices indices,*transform_cloud1,matrix); //第乙個引數為輸入,第二個引數為輸入點雲中部分點集索引,第三個為儲存物件,第四個是變換矩陣。

pcl::pointcloud::ptr cloud (new pcl::pointcloud);

pcl::io::loadpcdfile("/home/yxg/pcl/pcd/mid.pcd",*cloud);

pcl::normalestimationne;

ne.setinputcloud(cloud);

pcl::search::kdtree::ptr tree (new pcl::search::kdtree());

ne.setsearchmethod(tree);

pcl::pointcloud::ptr cloud_normals(new pcl::pointcloud());

ne.setksearch(8);

ne.compute(*cloud_normals);

pcl::pointcloud::ptr cloud_with_nomal (new pcl::pointcloud);

pcl::concatenatefields(*cloud,*cloud_normals,*cloud_with_nomal);

pcl中的無效點是指:點的某一座標值為nan.

#include #include #include #include using namespace std;

typedef pcl::pointxyzrgba point;

typedef pcl::pointcloudcloudtype;

int main (int argc,char **ar**)

output->width = 1;

output->height = m;

cout<< "size is"kdtree.setinputcloud(cloud);

int k =2;

float everagedistance =0;

for (int i =0; i < cloud->size()/2;i++)

}

其思想就是:將原始資料插入到flann的kdtree中,尋找keypoints的最近鄰,如果距離等於0,則說明是同一點,提取索引即可.

eigen::vector4f centroid;  //質心

pcl::compute3dcentroid(*cloud_smoothed,centroid); //估計質心的座標

#include #include #include #include #include #include //loadpolygonfileobj所屬標頭檔案;

#include #include #include using namespace pcl;

int main(int argc,char **ar**)

以上**可以從.obj或.ply麵片格式轉化為點雲型別。

pcl常用小知識和幾何計算

pcl中計算程式執行時間有很多函式,其中利用控制台的時間計算是 首先必須包含標頭檔案 include,其次,pcl console tictoc time time.tic 程式段 cout include include pcl pointcloud ptr cloudpointer new pc...

winfrom 常用小知識

winform 1.彈窗居中 this.startposition formstartposition.centerscreen 2.dx gridcontrol 不現實容器頭 showgrouppanel false 3.禁止改變窗體大小 formborderstyle fixedsingle f...

HTML常用小知識

h1.h6 文字標題標籤,h1對搜尋引擎友好,利於做seo優化。一般用來渲染logo。p,div 段落標籤塊級標籤,最常用的兩個標籤之一,p標籤用於存放一行或多行文字,display轉塊之後也可以成為塊級元素,但是盡量不要 把p標籤當作容器 div 是乙個標準的容器,css樣式使用得當,乙個頁面可以...