- 博客(248)
- 资源 (6)
- 问答 (2)
- 收藏
- 关注
原创 光流(Optical Flow)算法原理详见以及cv::calcOpticalFlowFarneback和cv::calcOpticalFlowPyrLK参数说明
方法特点优点缺点局部窗口法,线性方程组快速,适用于稀疏光流靠角点稀疏性,易受遮挡干扰全局最小化,带平滑项稠密估计效果好迭代复杂,慢Farneback多项式逼近+金字塔密集光流,性能稳定较慢深度学习方法精度高,适应复杂变形需 GPU,模型大。
2025-05-09 14:15:39
519
原创 C++中构造函数初始化列表详解和示例
构造函数初始化列表(Constructor Initialization List)是 C++ 中在进入函数体之前,对成员变量和基类子对象进行初始化的语法机制。语法形式位于构造函数名和函数体之间,以冒号// 构造函数体。
2025-05-09 09:12:13
587
原创 SLAM文献之KernelGPA: A Globally Optimal Solution to Deformable SLAM in Closed-form
特性描述目标解决可变形环境下的 SLAM 问题方法基于核回归的变形建模 + Procrustes 闭式对齐优势闭式解、无初值依赖、全局最优、低计算量应用医学成像、软体机器人、动态环境建图。
2025-05-08 23:39:11
320
原创 FAST角点检测算法原理附C++代码实现
给定一个像素ppp,以其为中心绘制一个半径为 3 的圆(16 个像素点),记为Sp1p2p16Sp1p2...p16,如下图所示。若在这个圆上存在连续nnn个像素(常用n12n = 12n12所有像素亮度都明显大于或明显小于中心像素ppp(与中心差值超过阈值ttt),则ppp被判定为角点,效果图如下。优势劣势极快(适合实时系统)不含角点响应评分适合图像金字塔对噪声敏感可结合 ORB、BRIEF 特征不鲁棒于尺度和旋转变化。
2025-05-08 15:08:21
663
原创 C++中友元(friend)知识详解和使用示例
友元是 C++ 中打破访问控制的有力手段,但也容易增加耦合、降低维护性。使用时应遵循最小化原则:仅声明真正需要的函数/类为友元。了解各种友元形式(函数、类、成员、模板),以及它们的使用场景与限制。通过替代方案(公有接口、代理模式等)权衡可维护性与灵活性。
2025-05-08 10:22:44
533
原创 C++面向对象设计类的核心知识详解总述(1)
特性关键语法示例构造函数MyClass()初始化成员变量析构函数~MyClass()资源释放成员函数类功能成员变量int value;数据属性继承子类继承父类多态virtualoverride动态调度静态成员所有对象共享常量函数保证只读友元访问 private 成员运算符重载自定义 +, <<, = 等行为。
2025-05-07 21:32:22
454
原创 张正友相机标定方法中标定板角点检测算法原理(Harris和Shi-Tomasi角点检测算法)
在棋盘格图案中,角点是白格与黑格交界的交叉点,即四个颜色区域交汇处的内角点(不包括外边框角点)。如图所示:若棋盘格为 8x6 格,则角点数量为 7×5=35 个。RdetM−k⋅traceM2λ1λ2−kλ1λ22RdetM−k⋅traceM2λ1λ2−kλ1λ22k∈0.040.06k∈0.040.06:经验常数若RthresholdRthreshold,该点为角点。
2025-05-07 14:18:53
990
原创 C++中STL 容器中引用与指针的使用对比(vector<T*> vs vector<T&>)
需求推荐做法需要引用对象,但不能复制使用需要控制对象生命周期使用存指针集合并自由操作使用存值并自动管理使用直接存值想要传值修改原始变量→ 用想要灵活指向不同对象→ 用裸指针或智能指针集合❌ 不要尝试vector<T&>—— C++ 不允许。
2025-05-07 10:04:38
366
原创 C++中指针使用详解(4)指针的高级应用汇总
..也可做内存池管理(如用于点云、游戏对象池)│ 高级指针用法│↓│ 函数指针 │ 成员指针 │ 智能指针 │ 指针算术 ││ 内存池 │ 指针与类 │ vtable 多态│ 类型转换 ││ ABI + 栈帧 │ 并发原子指针│ 插件接口 │ STL allocator │。
2025-05-06 23:57:39
539
原创 C++ 中二级指针的正确释放方法
注意点说明1必须先释放内层的new[]分配的每个块2最后再delete[]外层的指针数组3new[]必须对应delete[],不能写成delete4内存分配和释放要一一对应,避免内存泄漏5如果中间分配失败,要释放之前成功分配的部分(异常安全问题)6C风格的也可以申请二维数组,但释放方法和 C++ 不一样。
2025-05-05 22:29:26
332
原创 CloudCompare 中 ccDrawableObject
的显示属性,如颜色、可见性、LOD(层次细节)、光照等。它是许多可视化类(如。在 CloudCompare 插件开发时,我们可以使用。是 CloudCompare 3D 可视化的。)的基类,提供了一些通用的绘制方法。在 CloudCompare 中,✅ 在 CloudCompare。是一个基类,主要用于管理。)来控制对象的可视化。
2025-05-05 22:26:21
423
原创 C++模版结构体的使用
🔹 适用于泛型编程,保证指针转换时不会丢失。定义两种对普通指针类型的特化处理。,支持 STL 迭代器类型的转换。修饰符并转换指针类型。
2025-05-03 23:20:48
550
原创 CloudCompare 中的 KDTree详解
速度更快,因为它不需要返回最近点的具体索引。构建 KD 树后,点云数据被组织成。计算点到 KD 树单元格的平方距离。在 CloudCompare 进行。加速最近邻搜索,从而提高计算效率。✅ CloudCompare 通过。CloudCompare 中的。CloudCompare 通过。CloudCompare 使用。CloudCompare 进行。,仅判断是否存在某个点在。方面更高效,特别是在。主要由 KdCell。,便于加速最近邻搜索。
2025-05-02 20:32:15
744
原创 CloudCompare中CCCoreLib模块内容
在的代码结构中,CCCoreLib(CloudCompare Core Library)是,主要用于等底层算法实现。该模块提供了等核心功能,并且可以独立于 CloudCompare 主程序使用。CCCoreLib提供基础数学运算,包括等。
2025-05-01 18:31:49
626
原创 张正友相机标定算法(Zhang’s camera calibration method)原理和过程推导(附OpenCV代码示例)
张正友方法通过平面靶标图像(如棋盘格)的多个视角图像,提取角点特征,求解从平面到图像的单应性矩阵,再从中估计相机内参、外参及畸变参数。
2025-04-30 14:53:07
1464
3
原创 C++ 中自主内存管理 new/delete 与 malloc/free 完全详解
项目说明1new和delete要成对使用2new[]和delete[]要成对使用不是 delete!!!3不要混用malloc和delete,或new和free严重错误!4避免内存泄漏:申请的内存必须释放,否则内存泄漏5申请后立即检查返回值malloc返回 NULL,new可以捕捉异常6构造/析构问题malloc不负责对象构造,new是7自定义 new/delete:可以通过重载控制内存分配策略(如内存池优化)8异常安全:尽量使用智能指针(如)避免手动管理内存错误。
2025-04-29 22:34:07
473
原创 后验概率最大化(MAP)估计算法原理以及相具体的应用实例附C++代码示例
MAP估计 = 在最大似然上加上先验知识,让推断更加鲁棒。对象含义似然拟合观测数据的准确性先验防止参数过大(正则化)MAP估计似然 × 先验的最大化公式最小化误差项 + 正则项你希望拟合数据,同时又不希望参数太大(比如防止过拟合)。正则化参数λλ越大,先验越强,越倾向于把ab( a, b )ab拉向 0。
2025-04-29 17:14:01
1028
原创 C++中指针使用详解(3)数组、指针和函数参数传递的底层 ABI实现
函数如何调用(参数传递、返回值)栈帧布局(局部变量、返回地址、保存寄存器)调用约定(Calling Convention)数据的对齐方式(alignment)如何在内存中布局结构体、数组、类对象等例如:x86_64 系统通常使用。
2025-04-29 09:54:09
527
原创 Qt+PCL手把手教材(第5讲)——Qt 界面设计之Qt Widgets 与 Qt Quick(QML)的区别与选择(附Qt Widgets/Quick常规使用示例)
在中,和都是开发图形用户界面(GUI)的框架,但它们有不同的特点、适用场景和优缺点。理解它们之间的区别能够帮助你根据项目需求选择最适合的框架。是传统的 GUI 框架,它通过 C++ 编写和管理界面元素,适用于经典的桌面应用程序。它使用的是基于事件驱动的编程模型,利用传统的控件(如按钮、文本框等)来构建 UI。回调和信号槽机制。
2025-04-28 21:10:54
1566
原创 Python中数据切片操作详解和代码示例
在 Python 中,(slicing)是一个强大且常用的操作,尤其在列表、元组、字符串和其他序列类型(如rangenumpy数组等)中。切片允许你从序列中获取一个子集而不修改原始数据。
2025-04-27 15:33:40
416
原创 matplotlib画图工具使用(1) 画折线统计图python代码
plot(x, y)画线marker='o'在每个数据点加个小圈(好看!title()xlabel()ylabel()加标题grid(True)加网格线(统计图必备)
2025-04-26 21:45:45
261
原创 C++中const的应用(1)之const 形参和实参以及成员函数的 const 和重载
场景写法意义小对象传值不用const,没影响大对象传引用节省拷贝,安全修改指针指向内容可以改指向的内容保护指针指向内容不能改内容固定指针地址不能改指针本身区别解释返回非常量引用,可以赋值修改返回常量引用,只能读,不能改只有写了const版本,才能让const对象正常调用函数!特性说明const 成员函数声明时在函数末尾加const重载 const 和非const常见于operator[]at()const对象 只能调用 const成员函数所以经常要写两版。
2025-04-26 21:42:21
1062
原创 AI图像分割总汇
AI 图像分割模型是计算机视觉中的核心研究方向之一,广泛用于自动驾驶、医学影像、遥感图像分析等领域。下面是对图像分割模型的一些,按与进行系统整理。
2025-04-25 14:17:17
660
原创 C++中指针Ptr(一级指针、二级指针)的基本使用详解(1)
一级指针是指向变量的地址的指针。int a = 10;// p 是一个一级指针,指向变量 a二级指针是指向一级指针的指针。int a = 10;// pp 是二级指针,指向 p类型描述主要用法一级指针指向普通变量的地址传值修改、数组遍历、内存动态分配二级指针指向一级指针的地址指针重定向、二维数组、传引用修改指针数组连续内存块,数组名是首元素地址数据集合存储,和指针语法可互换使用。
2025-04-25 11:12:48
338
原创 Qt+PCL手把手教材(第4讲)——Win11环境(VTK9.1.0+Qt5.15.2)编译QVTK组件以及Linux上安装PCL库
在 Linux 上配置。
2025-04-24 22:43:27
1452
原创 点云配准算法之NDT算法原理详解
NDT(Normal Distributions Transform)最初用于2D激光雷达地图构建(Biber & Straßer, 2003),后扩展为3D点云配准。它将点云数据空间划分为网格单元(Voxel),在每个体素中拟合一个高斯分布,用此概率模型对点进行匹配优化。与 ICP 不同,NDT 是一个概率模型配准算法,具有更强的鲁棒性,适合处理稀疏/局部不一致的点云。对初始姿态误差鲁棒可导目标函数,利于快速优化支持稀疏点云、动态场景(配合滤波)
2025-04-24 11:29:52
844
原创 C++ 中 std::tuple 使用详解
是 C++11 引入的模板类,用于打包任意数量、任意类型的值在一起。可看作是类型安全的变长结构体。创建 tuple 的方法 会自动进行类型推导和转化。获取类型 & 大小修改元素值拆解 tuple(结构化绑定)C++17 提供结构化绑定:tuple 的比较、赋值高级技巧:递归访问 tuple遍历 tuple 中所有元素(使用模板递归)对每个元素执行函数(C++17 )根据类型访问 tuple 元素(要求类型唯一)与 结合解包、忽略元素tupl
2025-04-24 11:15:20
333
原创 C++ 中 std::thread 的高级应用
✅ 线程内部用控制退出比 bool 更安全✅ 类内线程要在析构时妥善停止并 join✅ 避免裸线程泄露:用类、封装、RAII 管理生命周期✅ 封装成线程池/任务队列是多线程项目的基础。
2025-04-23 23:16:02
418
原创 C++中std::vector使用超级详解
是 C++ STL 中最常用的动态数组容器支持随机访问内存是一块连续的空间自动扩容,支持添加和删除元素方法作用内存是否释放clear()清除所有元素❌ 不释放内存(capacity 保留)请求释放多余内存✅ 释放未使用容量(非强制)swap()与空 vector 交换,强制释放✅✅ 推荐方式简写版强制释放✅✅ 推荐方式目标推荐操作清除数据,但保留内存用于重用clear()清除数据 + 建议释放内存clear();清除数据 + 强制释放所有内存。
2025-04-23 11:05:52
867
原创 C++ 中 std::queue的使用详解
std::queue是 C++ 标准库中提供的一个**先进先出(FIFO)**的顺序容器适配器。入队(push):元素从尾部(back)插入;出队(pop):元素从头部(front)移除。std::queue是容器适配器(container adaptor),底层默认使用std::deque作为实现容器,但你也可以替换为std::list等。while (!
2025-04-23 09:55:58
905
原创 AI在 SLAM方向的应用综述
AI 技术正深刻改变 SLAM 系统的架构与能力。从传统几何方法到学习驱动模型,AI 推动 SLAM 向更智能、鲁棒、语义化的方向发展。未来的 SLAM 系统将更多地融合 AI 与物理世界知识,走向真实世界中的可靠部署。
2025-04-22 13:49:13
772
原创 RANSAC算法原理以及附C++代码拟合2D直线
Inliers:服从假设模型的数据点Outliers:不服从该模型的噪声点模型:我们要拟合的函数(如线、平面、变换矩阵)项内容优点鲁棒性强、可估计各种模型、易于实现缺点随机性大、结果不稳定、耗时、依赖参数扩展PROSAC、MLESAC、LO-RANSAC、GC-RANSAC(图优化)
2025-04-22 11:05:28
699
原创 C++ 中函数参数传递(值传递、指针传递、引用传递和const 引用传递)等内容详解
用途推荐方式小型类型(int, double)值传递只读大型对象(std::vector 等)const 引用传递可修改对象引用或指针传递(引用更安全)条件修改或可能为 null指针传递移动资源所有权右值引用(+std::move。
2025-04-22 10:24:40
368
原创 C++中的算术转换、其他隐式类型转换和显示转换详解
转换类型触发方式安全性用途/说明算术转换自动安全数值运算中的标准提升隐式转换自动通常安全函数调用/指针/基本类型提升显式安全编译期可检查的转换,如 int→float,向上转型显式安全多态类型的运行时向下转型const_cast显式有风险去除 const/volatile显式不安全位级别转换,极端情况用C风格强制转换显式不推荐混合多个C++转换,缺乏类型安全shape.h。
2025-04-21 21:19:52
888
原创 C++中的未定义详解
未定义行为是由 C++ 标准规定的,是指程序中的某些代码没有定义明确行为的执行结果。发生 UB 后,编译器有权做任何优化,甚至生成无法预测的机器码。标准里常说:“if the program exhibits undefined behavior, anything can happen.”数组越界访问// 未定义行为:越界访问虽然有时不会崩,但标准不保证结果。int i = 0;// 不可预测未定义行为是 C++ 的“地雷”,虽然允许编译器优化,但容易让程序出现难以调试的 bug。
2025-04-21 10:49:01
412
Qt Widgets 使用例子,覆盖常见控件和用法,适合刚入门 Qt 的开发者参考
2025-04-28
Cmake软件3.15和3.22版本
2025-04-20
Qt+PCL自编译PCL点云库,编译VTK(9.1.0)+Qt(5.15.2),可以将PCL库中的 pcl::visualization::PCLVisualizer用于在Qt中实现点云数据的可视化
2025-04-19
图像/点云非刚性检测和配准-非刚性检测,非刚性增强现实,实时可变形配准
2025-03-26
SLAM技术详解及其项目应用场景与优化方案
2024-10-31
Opencl入门学习例子
2020-12-04
opencv-3.1.0+opencv_contrib-3.1.0+ippicv_windows_20151201
2018-05-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人