- 博客(22)
- 资源 (5)
- 收藏
- 关注
原创 C++——二分法求多项式曲线区间极值
二分法求解,设置left为左边界,right为右边界,则解一定位于left和right之间,当左右边界之间的差值小于某一精确度时,就认为找到了解。具体操作如下,若是先减后增,首先判断左右边界差值作为循环条件,接着每次循环找到左右边界的中间值,一旦该点导数值小于0,说明该点的右侧存在正确解,则将左边界设置为该点,反之将右边界缩进,左右边界通过循环不断的向正确解缩进(先增后减与之相反)。满足某一精确度后即可输出结果(注意这里的函数在区间中是比较常规简单的单调函数)。
2023-06-27 14:15:50 451
转载 函数使用笔记——ShellExecute
ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。
2022-08-04 16:34:17 2503
原创 通过哪些性能参数选择手持式激光扫描仪?
标题选择手持式激光扫描仪 激光主动成像系统有诸多优点,譬如抗干扰性强,能很好地适应不同的测量现场,但是它的图像会受到散斑噪声和其他一些高斯噪声的影响。 如图1所示,分别用红/蓝激光扫描点距0.1mm的标定板,红色激光散斑效应明显: 图1 红蓝激光在低解析度对比图 大量实验表明,单独蓝色激光的散斑效应非常不明显,从而可以忽略单独蓝色激光产生的散斑现象。因而,使用蓝色激光扫描的结果细节度更高。 在整个光谱中(如图2),蓝色光谱窄,自然界中蓝色物体非常少,所以蓝色激光的抗干扰能力比红色激光
2021-10-26 11:05:16 699
原创 C++ STL——迭代器
迭代器 无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用“迭代器(iterator)”来实现。 我们知道,尽管不同容器的内部结构各异,但它们本质上都是用来存储大量数据的,换句话说,都是一串能存储多个数据的存储单元。因此,诸如数据的排序、查找、求和等需要对数据进行遍历的操作方法应该是类似的。 既然类似,完全可以利用泛型技术,将它们设计成适用所有容器的通用算法,从而将容器和算法分离开。但实现此目的需要有一个类似中介的装置,它除了要具有对容器进行遍历读写
2021-10-24 20:37:49 2627
原创 C++ STL——容器
容器 在实际的开发过程中,合理组织数据的存取与选择处理数据的算法同等重要,存取数据的方式往往会直接影响到对它们进行增删改查操作的复杂程度和时间消耗。事实上,当程序中存在对时耗要求很高的部分时,数据结构的选择就显得尤为重要,有时甚至直接影响程序执行的成败。 STL 中提供了专家级的几乎我们所需要的各种容器,功能很好,复用性很高。 简单的理解容器,它就是一些模板类的集合,但和普通模板类不同的是,容器中封装的是组织数据的方法(也就是数据结构)。STL 提供有 3 类标准容器,分别是序列容器、排序容器和
2021-10-15 15:36:58 96
原创 C++ STL——简介及其6大组件与13个头文件
简介及其6大组件与13个头文件 STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这6大组件构成,其中后面4部分是为前2部分服务的。 容器:一些封装数据结构的模板类,例如 vector 向量容器、list 列表容器等。算法:STL提供了非常多(大约100个)的数据结构算法,它们都被设计成一个个的模板函数,这些算法在std命名空间中定义,其中大部分算法都包含在头文件中,少部分位于头文件中。 迭代器:在C++ STL中,对容器中数据的读和写,是通过迭代器完成的,它扮演着容器和算法之间的胶
2021-07-27 14:03:17 1436
原创 PCL点云库——最小包围盒
最小包围盒 包围盒也叫外接最小矩形,是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。 常见的包围盒算法有AABB包围盒、包围球、方向包围盒OBB以及固定方向凸包FDH。碰撞检测问题在虚拟现实、计算机辅助设计与制造、游戏及机器人等领域有着广泛的应用,甚至成为关键技术。而包围盒算法是进行碰撞干涉初步检测的重要方法之一。图1 包围盒种类#include <pcl/features/moment_of_inertia_esti
2021-07-22 17:06:49 4143 4
原创 PCL点云库——PCA粗配准
PCA配准 主成分分析法( Principal Component Analysis,简称PCA)是使数据简化的算法,通过揭露数据内部的主要分布方向,减少了数据集的维数,从而保留了点云集中贡献最大的特征,更好地解释数据的变化规律。PCA 算法进行点云配准是以主方向为依据,根据两点云的主方向计算出对应的三个旋转和三个平移量,可大致对齐两点云数据。 #include <pcl/visualization/cloud_viewer.h>#include <pcl/io/pcd_io.
2021-07-12 16:24:43 7667 14
原创 PCL点云库——点云最大曲率
点云最大曲率 pcl::PrincipalCurvaturesEstimation是PCL中的点云曲率估计方法,其在法线计算的基础上对点云的曲率进行计算。 如图1所示,红色部分为斯坦福兔子曲率最大的5000个点。 最大曲率估计代码如下:#include <pcl/io/pcd_io.h>#include <pcl/features/normal_3d.h>#include <pcl/features/principal_curvatures.h>#i
2021-04-23 11:37:17 4507 3
原创 PCL点云库——点云法线估计
点云法线估计 PCL中的所有点云的法线都是指向视点的,对视点进行设置,则可对法线进行定向。 法线计算代码如下:#include <pcl/io/pcd_io.h>#include <pcl/features/normal_3d.h>#include <pcl/features/normal_3d_omp.h>#include <omp.h>#include <pcl/visualization/cloud_viewer.h>#i
2021-03-31 10:48:32 4948 10
原创 PCL Viewer视图区快捷键
PCL Viewer视图区快捷键p, P : switch to a point-based representation (以点为基准展示)w, W : switch to a wireframe-based representation (where available) (以线框为基准展示)s, S : switch to a surface-based representation (where available) (以平面为
2021-03-06 16:50:50 1854
原创 MFC错误 error RC2108: expected numerical dialog constant
MFC错误——error RC2108: expected numerical dialog constant MFC在使用picture console控件,或者对控件进行修改之后,有时会弹出错误:error RC2108: expected numerical dialog constant,如图1。 图1 双击错误,会跳到提示错误的那一行,在那一行中的前一行的一串地址前插入:“Static”, SS_BITMAP, 。改动如图2。 图2 保存后重新编译即可。...
2021-01-08 17:21:08 1575
原创 PCL点云库——区域增长分割
区域增长分割 区域生长算法是利用了法线、曲率和颜色等信息来判断点云是否应该聚成一类。适用于特征均匀的连通目标。通过设定的约束条件并结合分割数据的融合需求,利用场景中物体的特征将不同的目标物体从场景中分割出来。PCL中调用区域生长分割类pcl::RegionGrowing,实现区域生长分割算法,算法的目标是按照平滑一致性约束条件合并足够近的点,因此算法的输出是一组集群,且每个集群上的点位于同一个光滑表面。该算法是一种基于点的法线角度差的分割,通过比较种子点与其邻域点之间的法线夹角,将小于平滑阈值(人为设定
2020-11-28 15:01:42 4311 8
原创 MFC单文档应用程序使用CDockablePane类创建模型树停靠窗口
MFC单文档应用程序使用CDockablePane类创建停靠窗口 在“资源视图”中找到“Dialog”,右击选择“插入Dialog(E)”,将“工具箱”中的“Tree Control”拖至创建的Dialog(对话框)上,并将模型树控件与对话框的属性改为下图所示。2. 右击对话框,为对话框添加类CTreeWindow。3. 右击模型树控件,为其添加CTreeCtrl类型变量m_cTreeCtrl。4. 重写该对话框类的初始化函数OnInitDialog(),在该函数中添加如下代码。
2020-11-17 11:03:53 1432 2
原创 PCL点云库——欧式聚类分割
PCL欧式聚类分割 pcl::EuclideanClusterExtraction是基于欧式距离提取集群的方法,仅依据距离,将小于距离阈值的点云作为一个集群。 具体的实现方法大致是: (1) 找到空间中某点p10,有kdTree找到离他最近的n个点,判断这n个点到p的距离; (2) 将距离小于阈值r的点p12、p13、p14…放在类Q里; (3) 在 Q\p10 里找到一点p12,重复1; (4) 在 Q\p10、p12 找到一点,重复1,找到p22、p23、p24…全部放进Q里;
2020-11-16 16:12:41 6234 13
原创 PCL点云库——平面模型分割
PCL平面模型分割 平面模型分割是采用随机采样一致性对点云拟合出一个平面,将点到该平面的距离小于“距离阈值”的点都作为内点,大于“距离阈值”的点都作为外点。可以通过设置参数选择保留内点还是外点。...
2020-11-15 15:46:37 1072
原创 PCL点云库——使用VoxelGrid滤波器对点云进行下采样
使用VoxelGrid滤波器对点云进行下采样 使用体素化网格方法实现下采样,即减少点云中点的数量,并同时保持点云的形状特征。PCL实现的VoxelGrid类通过输入的点云数据创建一个三维体栅格,然后在每个体素内,用体素中所有点的重心来近似显示体素中其他点,这样该体素内所有点就用一个重心点最终表示,最后所有体素处理后得到过滤后的点云。//****使用VoxelGrid滤波器对点云进行下采样****//#include <iostream> #include <pcl/io/pc
2020-11-14 11:11:22 674
原创 MFC模型树控件TreeCtrl实现按下Ctrl键多选,按下Shift键连选
MFC模型树控件TreeCtrl实现按下Ctrl键多选,按下Shift键连选 MFC的List Box只需要将控件属性中的Selection项设置为Extended,即可实现Ctrl键多选和Shift键连选;然而MFC的Tree Contrl(TreeCtrl)没有像List Box那样设置某个属性就实现Ctrl键多选和Shift键连选的功能,网上大多数MFC的TreeCtrl多选功能是用复选框实现的,也存在前辈想通过继承类CTreeCtrl来重写多选功能,其中实现该功能较好的示例为以下链接:http:
2020-11-08 11:51:20 2386 7
原创 MFC使用PostMessage与SendMessage发消息
MFC中PostMessage与SendMessage的使用1. 在Resource.h中添加自定义消息ID: #define WM_USER_TREE (WM_USER+400)2. 定义消息处理函数的函数声明: afx_msg LRESULT MsgTree(WPARAM wpa, LPARAM lpa);3. 在类的消息映射表中添加该消息的消息映射入口项: ON_MESSAGE(WM_USER_TREE, &CTreeTestDlg::MsgTree)4. 在类实现中添加消息处理
2020-11-08 11:49:23 636
原创 C++、MFC往Word模板中添加图片
往Word模板中添加图片 新建一个基于对话框的MFC应用程序工程,将对话框界面设置成图1所示。图1 通过类向导添加所有的接口,使VS与Word建立联系。 “类向导”界面如图2,在 “添加类”处选择“类型库中的MFC类(T)...”,弹出图3所示界面,选择从文件中添加类。图2图3 找到计算机中Word安装路径中“MSWORD.OLB”文件,如图4所示,单击“打开”按钮,则“接口”窗口出现Word相关接口,如图5 所示。图4图5 可以根据自己的需要添加接口,往Word
2020-10-24 10:57:46 2565 1
PCL点云库-欧式聚类分割-麦粒
2023-03-13
AddPictureToWord.rar
2020-10-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人