我现在需要对点云数据提取特征线,比如边缘线之类的。
pcl库对于点云数据的点特征提取有很多对应的方法,但是没查到关于线特征提取的。
想问一下大佬们,pcl支持特征线提取吗,是不是我找资料的时候找错了关键词。
3条回答 默认 最新
- 颜早早 2018-10-17 00:08关注
忘了把找到的方法写出来了
int arg_kNearest = 30;//一般这里的数值越高,最终边界识别的精度越好 int arg_Angle = 144;//角度值,0-360 pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>); pcl::PointCloud<pcl::Boundary> boundaries;//Boundary,表示点是否位于表面边界的描述的点结构 pcl::BoundaryEstimation<pcl::PointXYZRGBA, pcl::Normal, pcl::Boundary> est; //BoundaryEstimation使用角度标准估计一组点是否位于表面边界上 pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGBA>()); //其中pcl::PointXYZ表示输入类型数据,pcl::Normal表示输出类型,且pcl::Normal前三项是法向,最后一项是曲率 pcl::NormalEstimation<pcl::PointXYZRGBA, pcl::Normal> normEst;//NormalEstimation类,用于估计每个3D点的局部表面属性(表面法线和曲率) normEst.setInputCloud(input_cloud); normEst.setSearchMethod(tree); // normEst.setRadiusSearch(2); //法向估计的半径 normEst.setKSearch(9); //法向估计的点数 normEst.compute(*normals); cout << "normal size is " << normals->size() << endl; //normal_est.setViewPoint(0,0,0); //这个应该会使法向一致 est.setInputCloud(input_cloud); est.setInputNormals(normals); //est.setAngleThreshold(M_PI *4/5);//默认是M_PI/2, M_PI是180度 est.setAngleThreshold(M_PI*(arg_Angle % 360) / 180); //est.setSearchMethod (pcl::search::KdTree<pcl::PointXYZ>::Ptr (new pcl::search::KdTree<pcl::PointXYZ>)); est.setSearchMethod(tree); est.setKSearch(arg_kNearest); //est.setRadiusSearch(everagedistance); //搜索半径 est.compute(boundaries); //pcl::PointCloud<pcl::PointXYZ> boundPoints; pcl::PointCloud<pcl::PointXYZRGBA>::Ptr boundPoints(new pcl::PointCloud<pcl::PointXYZRGBA>); pcl::PointCloud<pcl::PointXYZRGBA> noBoundPoints; int countBoundaries = 0; for (int i = 0; i<input_cloud->size(); i++) { uint8_t x = (boundaries.points[i].boundary_point); int a = static_cast<int>(x); //该函数的功能是强制类型转换 if (a == 1) { // boundPoints.push_back(cloud->points[i]); (*boundPoints).push_back(input_cloud->points[i]); countBoundaries++; } else noBoundPoints.push_back(input_cloud->points[i]); } //boundPoints就是最后要的结果
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 3
悬赏问题
- ¥15 宝塔面板一键迁移使用不了
- ¥15 求一个按键录像存储到内存卡的ESP32CAM代码
- ¥15 如何单独修改下列canvas推箱子代码target参数?,插入图片代替其形状,就是哪个绿色的圆圈每关用插入的图片替代
- ¥20 四叉树的创建和输出问题
- ¥15 javaweb连接数据库,jsp文件加载不出来
- ¥15 matlab关于高斯赛德尔迭代的应用编撰。(相关搜索:matlab代码|迭代法)
- ¥15 损失匹配问题,求解答
- ¥15 3500常用汉字书法体检测数据集下载
- ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
- ¥15 Qt音乐播放器的音乐文件相对路径怎么写