- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 【CGAL】圆柱体检测结果后处理
在使用CGAL中 region growing 算法爬取圆柱后,结果并不准确。在此进行后处理操作,以求得到合理的单个圆柱。
2024-06-14 17:03:25 636
原创 【CGAL】Region_Growing检测圆柱,保存结果并输出圆柱体参数
记录CGAL中检测圆柱体,保存检测结果与参数的方式。文章中还提到了官方库代码中一些问题和注意事项。
2024-06-11 18:06:32 425
原创 【CGAL】Region_Growing 检测平面并保存
使用CGAL库中的Region_Growing算法检测平面,并将属于同一平面的点赋予相同的颜色,最后保存未PLY文件。
2024-05-27 18:26:23 807
原创 【CGAL】自动生成带颜色的点并保存为PLY文件
该代码为CGAL官方库原代码,但是在库中的位置不太好找,这里做一下收录。代码功能为。可以通过这篇代码了解CGAL中关于PLY文件读写相关的结构体定义与操作。
2024-05-23 17:50:59 205
原创 解决Win11中由于换行类型(CRLF、LF、CR)造成的代码编译出错
在使用CGAL库测试其中的样例代码时,出现了编译问题。经查证,发现是由于CGAL库中换行类型与Windows换行类型不匹配所导致的错误。但是这个报错并不总是出现,我之前编译的使用CGAL的项目就没有出现这个错误。该项目是使用了 Shape Reconstruction/Polygonal Surface Reconstruction 中的。该项目使用vcpkg与json文件自动安装cgal依赖库,如果不会操作,可以看一下我的项目目录结构其中,test.cpp 即3.1中的第一个例子代码。
2024-05-21 18:08:17 404
原创 VS2015创建Qt项目(包含创建后出现的各种问题解决)
说明我在使用VS2015创建项目时,遇到了各种奇怪问题,在这篇博客中逐个做出说明并解决。创建Qt项目打开 VS2015 -》新建 -》新建项目选择依赖项 GUI 、Core 、Widgets,之后我选择了QWidget, finish。新建后可以看到出现了各种各样的错误,不用怕,我们挨个解决首先,解决 无法打开源文件调试-》项目属性-》配置属性-》C/C+±》常规-》附加包含目录把Qt 安装路径中的 include 文件夹包含进去再解决 无法打开源文件 ui_MyQtTest3.h
2022-02-06 11:32:42 3259
原创 KPM算法求next数组与nextval数组(手动)
模式串S = “abaabcac”next[]求法:所有数组下标从1开始,首先将设置next[1] = 0;next[2] = 1;从下标3开始,判断 S[i-1]==S[next[i-1]]如果成立,则 next[i] = next[i-1]+1;如果不成立,则判断 S[i-1]==S[next[next[i-1]]];重复此步骤,直至成立。如果找到第一位还不成立,则next[i] = 1;nextval[]求法:求出 next[],数组下标从1开始,将 nextval[1] 设
2021-08-10 22:58:46 506
原创 PCL 下采样+去除离群点+可视化
目的在进行点云项目的时候用到了下采样,去除离群点等操作。所以把它俩写到了一起,最后加了个可视化方便查看。其中下采样是用的VoxelGrid滤波器,去除离群点使用了StatisticsOutlierRemoval滤波器。代码#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/filters/voxel_grid.h>#inclu
2021-05-17 18:47:49 603
原创 PCL点云可视化(不用VTK)
目的将一片点云进行可视化。代码#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/filters/conditional_removal.h>#include <pcl/visualization/cloud_viewer.h> #include <pcl/visualization/pcl_visualizer.h>using namespace std;ty
2021-05-17 17:40:41 562 2
原创 PCL拼接两片或N片点云
目的在进行PCL项目的时候,涉及到了拼接两片点云的操作。目的就是把两片点云数据转换到世界坐标系后,放到一片点云中。代码#include<iostream>#include <pcl/visualization/cloud_viewer.h>#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>#include <pcl/features/normal_3d.h>#include <bo
2021-05-15 19:57:46 654
原创 解决串口数据接收,实际值FF,接收却是FFFFFFFF
原因C++ 字符型char一个字节位8位二进制,最高位为符号位,1表示负数,0表示正数。所以它表示的范围是 -127~128。而当我们接收的是FF时就超过了它所表示的范围。解决方法用unsigned char 类型来接收串口传递过来的数据。...
2021-01-30 21:38:19 3854
原创 没有与参数列表匹配的 重载函数“pcl::visualization::PCLVisualizer::addPointCloud“实例
问题我在用可视化点云的时候遇到了这个问题源代码pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);pcl::PCDReader reader;reader.read("D:/test_1.pcd", *cloud1); boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer_plane(
2020-10-06 16:11:36 3365 2
原创 PCL 学习官方教程遇到的格式问题
说明:在我们使用PCL中的教程实例或者开发我们自己的工程的时候可能会遇到上一个模块所用的点云类型与下一个模块所用的点云类型不匹配。接下来会介绍三个转换点云类型的格式的函数。pcl::PointXYZRGBA转pcl::PointXYZ在PCL官方文档中有个实例 使用条件或RadiusOutlier删除来删除离群值setInputCloud();中的参数类型要求是pcl::PointXYZ。#include <pcl/io/pcd_io.h>pcl::PointCloud<pcl
2020-10-06 14:29:05 334
原创 sudo gedit /etc/apt/sources.list command not found
gedit 后有个空格。不加会导致这个错误。
2020-07-27 09:59:58 2592 1
原创 基于广度优先遍历算法求采用邻接表存储的无向连通图G中从顶点u到v的最短路径
问题假设图G采用邻接表存储,设计一个算法,求不带权无向连通图G中从顶点u->v的最短路径(路径上经过的顶点数最少。采用广度优先遍历来实现。基本思路我们首先来看一下BFS的过程:图片摘自慕课网李春葆老师讲的数据结构。从图中我们可以看到BFS的过程就是给定一个起点u,从起点u到某一个顶点(假设v)的最短路径构成分层。下面我先给出一个代码,然后再给出一个例题并进行分析。代码typedef struct ANode { int adjvex; //该边的终点编号 struct ANo
2020-05-16 07:13:18 3937 1
原创 利用回溯的深度优先遍历找出基于邻接表存储的图中一个顶点到另一个顶点的所有简单路径
邻接表存储方法对图中的每个顶点 i 建立单链表,将i的所有邻接点链起来。每个单链表添加一个表头节点(表示顶点信息)。并将所有的表头节点构成一个数组,下标为 i 的元素表示顶点 i 的表头节点。存储类型定义如下typedef struct ANode { int adjvex; //该边的终点编号 struct ANode *nextarc; //指向下一条边的指针 int name[10]; //该边的权值等信息}ArcNode;typedef struct Vn
2020-05-14 17:51:16 1568 2
原创 初等排序(插入排序法、冒泡排序法、选择排序法)
插入排序法:方法介绍:插入排序法的思路与打牌时排列手牌的方法很相似。比如我们现在单手拿牌,然后要将牌从左至右、由小到大排序。此时我们需要将牌一张张抽出来,然后插入前面已排好序的手牌的适当位置。重复这一操作,知道插入最后一张牌,整个排序就完成了。插入排序的核心算法如下:代码void insertionSort(int A[], int N) //插入排序法(A[]存储数据的数组。...
2020-01-23 10:48:22 185
原创 PCL 利用RANSAC算法拟合平面并旋转
说明:最近的项目用到了PCL里的旋转平面,然后又需要按一定的角度旋转,因此对于给定一个平面的数据集,需要利用RANSAC算法拟合出平面方程,然后根据需要,求出相应的角度并按一定的方式旋转,程序大体上分为两个功能,一个是拟合平面求方程,一个是旋转点云。方法拟合平面有两种方法,最小二乘法,和RANSAC算法。PCL库中SACSegmentation类中用的是RANSAC的算法来拟合平面的。...
2019-10-22 21:49:00 3064 6
原创 PCL 获得两片空间对齐点云的差距
说明:本篇博客的目的是利用PCL中class pcl::SegmentDifferences< PointT >类来获得两片空间对齐点云的差异,可以用来分割出空间中突然多出来的某些点云。所用的配置 VS2015+PCL1.8.1+kinectV2代码如下:#include <iostream>#include <pcl/io/pcd_io.h>#in...
2019-09-21 22:44:32 2553 4
原创 PCL+kinect2.0实现点云数据的获取及储存
说明最近也是开始了PCL的学习之路,希望在与大家交流的过程中可以从小白一步步成长。这篇代码也是受一位学长和网上一些相关文章的启发写出来的,下面我会给出源码和一些容易掉进去的坑,希望有志同道合的朋友可以多多指正。那位学长也是很厉害的,大家可以去他的主页看看有没有自己一直想解决却解决不了的问题的方法。他的主页点云显示+储存 代码:#include"kinect2_grabber.h...
2019-07-30 21:23:37 6993 43
原创 0x00007FF73DF2C2EB 处(位于 PCL中)引发的异常: 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突。
关于读取或写入问题时发生访问冲突的错误原因:一般情况下是因为读取或写入文件的路径发生了错误。一定要仔细核对路径问题,还应该注意一个小细节。如图:这里的路径 D:\table_scene_lms400是 错误的。应该改为D:\\table_scene_lms400。否则就会出现第一张图一样的错误。...
2019-07-24 07:07:12 12930 6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人