自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 canny边缘检测算法(c++实现)

本文介绍了一个基于OpenCV库的自定义Canny边缘检测算法实现。代码首先通过高斯滤波对输入图像进行平滑处理,以减少噪声。接着,使用Sobel算子计算图像的梯度幅值和方向。然后,通过非极大值抑制算法细化边缘,保留局部最大梯度值。最后,采用双阈值处理和边缘连接技术,确定并连接强边缘,生成最终的边缘检测结果。整个算法封装在customCanny函数中,并通过主函数加载灰度图像并调用该函数进行边缘检测,最终显示原始图像和检测到的边缘。

2025-05-20 21:07:51 653

原创 harris角点检测

本文介绍了Harris角点检测算法的原理与实现。角点定义为滑窗沿任意方向移动时亮度变化显著的点。通过定义窗口能量函数,并对其进行二阶泰勒展开,推导出角点检测的关键公式。算法通过计算图像梯度矩阵的特征值,判断是否为角点。代码实现部分展示了如何使用Sobel算子计算图像梯度,并通过卷积操作计算Harris响应值。最后,通过设定阈值筛选出角点,并在图像上标记。代码还提供了图像读取、处理和保存的完整流程,使用stb_image库进行图像操作。

2025-05-19 21:32:52 248

原创 std::tuple 用法

功能用法示例创建元组获取元素修改元素解包(C++17)获取大小合并元组。

2025-05-16 14:19:35 132

原创 德劳内三角剖分原理

德劳内三角剖分是在一组平面点中生成三角形的方式,使得任意一个三角形的外接圆内部都不包含其他点。这个性质保证了构建的三角网格“最合理”、不瘦长,适合空间插值与地形建模。特性内容空圆性质三角形的外接圆内不包含其他点最优角度最大化三角形最小角度,避免瘦角对偶结构与 Voronoi 图互为对偶构建复杂度平面O(n log n),三维更复杂应用广泛地形建模、点云重建、图形学等如果你想:看代码实现(Python、C++等);使用工具库(如 CGAL、scipy、QGIS);

2025-05-16 11:54:35 453

原创 为什么在生成DSM前,要构建三角面片(Mesh)

原因解释🔄 连接离散点形成连续面,表达地表形状📍 便于插值知道三角面后可进行稳定、局部的线性插值🎯 保留结构避免破坏原有地形结构,如屋顶、边缘等🧠 空间表达清晰适合后续分析,如坡度、曲率、水流模拟等。

2025-05-16 11:45:56 431

原创 std::lock_guard 和 unique_lock的区别

用lock_guard是“安全默认”的方式;用是“灵活专业”的方式。

2025-05-15 13:58:38 208

原创 不同的类型的数据存放的存储区域说明

【代码】不同的类型的数据存放的存储区域说明。

2025-05-08 16:37:44 72

原创 多线程里面 锁是怎么知道要保护哪个变量的

锁不是绑定到变量的,而是人为设计来保护变量访问的。需要你始终遵守约定:访问某变量时必须先持有对应的锁。最好的做法是封装锁和数据,防止不安全访问。

2025-05-08 11:36:52 791

原创 保证线程安全的方法

要,关键在于防止多个线程同时访问共享资源时产生竞态条件(race condition)。

2025-05-08 10:49:50 316

原创 把本地的文件拷贝到wsl的文件夹下或者 wsl读取本地的文件

你可以非常方便地在 Windows 和 WSL(Windows Subsystem for Linux)之间。

2025-05-07 14:25:02 238

原创 ceres/gtest/gtest.h:10445:35: error: variable or field ‘it’ declared void10445 | for (typename C:

已思考 13 秒以下错误通常不是语法错误本身,而是 Ceres 自带的 GTest 与所用 Eigen、或编译选项之间的不兼容导致宏/模板解析失败,进而把it识别成void类型。

2025-05-07 11:13:40 1100 1

原创 CHECK(local_parameterization_ == NULL) << “Can‘t re-set the local parameterization; it lead

在 glog 中,if (!abort();// 强制终止程序而<<是重载的输出运算符,像std::cout一样,把信息组合在一起输出。语法含义CHECK(x)如果x为 false,就打印错误并终止追加错误信息(可多个)被检查的成员变量== NULL条件是“尚未设置”

2025-05-07 10:15:53 226

原创 不能返回一个函数的局部变量的引用或指针

返回方式是否安全注意事项按值返回✅最推荐方式,支持优化返回局部引用/指针❌会导致悬垂引用/未定义行为返回动态分配指针✅注意内存管理(建议用智能指针)通过参数返回✅函数不直接返回结果,易于控制返回 static 引用⚠️有状态、线程不安全,需小心使用。

2025-05-06 10:47:08 263

原创 failed to start gdm.service - gnome display manager

4. 运行startx。如果成功,您可以重新启动系统,并期望gdm能够正常工作。3. (可选)运行sudo apt-install--重新安装ubuntu桌面。1. 显示错误消息后,键入Ctrl+Alt+F2(不是原始答案中的F3)对我来说,这是在~/下载。5. 运行reboot将重新启动您的计算机。2. 提供用户/通行证并登录您的帐户。

2025-04-27 14:02:02 356

原创 解决ssh拉取服务器数据,要多次输入密码的问题

方法安全性推荐度特点SSH 免密登录✅✅✅⭐⭐⭐⭐⭐配置一次,终身受益sshpass❌⭐⭐快捷测试,不推荐长期使用。

2025-04-25 15:25:01 437

原创 重载和重写的区分

重载靠参数,重写靠继承。前者编译选,后者运行定。

2025-04-24 19:13:40 394

原创 区分指向常量的指针、常指针和指向常量的常指针

优先使用const修饰不应修改的参数(例如理解清晰你的目的:你是要锁住“指针”还是“指针指向的数据”?写代码时从右往左读更清楚可读为 “p是一个常量指针,指向一个常量 int”。如果你常用的话,养成“从右向左读指针声明”的习惯,真的非常有帮助!

2025-04-24 16:59:57 650

原创 可视化轨迹的朝向

evo_traj是一个很好的工具去可视化轨迹,但是这个只能显示轨迹顺着时间轴的连续性的样子,或者去计算轨迹的误差,但是没有办法显示轨迹的朝向,因此,为了可以方便的可视化轨迹的朝向,可以使用pangolin去可是话对应evo格式的轨迹。

2025-04-23 15:04:12 374

原创 unordered_set 和 unordered_map 和 map 和 set的区别

set如果你要...推荐容器存储一组唯一的、排序的值set存储一组唯一的、快速查找但不排序的值保存 key-value,按 key 排序遍历map保存 key-value,仅快速查找,不排序。

2025-04-23 09:20:49 516

原创 Multi-View Stereo for Community Photo Collections

但是,两个视图之间存在共有的特征不能保证好的稠密重建的结果,两个视图之间存在很多的匹配的时候,往往的重叠度很高,这个时候一般两张图之间基线很小,基线小计算的视差误差就会偏大。在SFM阶段计算的3D点(共有特征)是一个很好的指示,对于给定的视图R去找到与之相关的视图V,因为3D点源自于三角化,而三角化又来自于特征的匹配,那么如果两个视图存在匹配了,直接就说明两个视图之间存在重叠关系。如公式所示,对应的分辨率的比值在1-2之间时,得分是最高的1,也就是说两张图像的分辨率越相近,得分越高。在实验中设置为10度。

2025-04-22 19:21:19 359

原创 #define RFOREACH(var, arr) for (ARR2IDX(arr) var=(arr).size(); var-->0; )

这个宏的定义:是用来 反向遍历一个容器(比如 vector) 的,非常紧凑而且聪明的写法。假设你有一个容器,比如:然后你用:这个宏展开成:分析: 这个宏的作用通常是推导合适的索引类型,比如 ,常见定义可能是: 这样 会变成 (通常是 )。:从最后一个 index 的后面开始。:先判断 ,再执行 ,所以 最后一次迭代时 i==1,然后变成 0 就退出循环。所以实际遍历的 index 是:💡 从最后一个元素开始,按 index 倒着遍历整个容器。输出:

2025-04-22 09:16:04 411 1

原创 typedef MVS_API CLISTDEF0IDX(ViewScore, IIndex) ViewScoreArr;

我们没有在 List.h 文件中找到 MVS_API 的定义。MVS_API 很可能在 MVS 库的其他地方定义。一般来说,MVS_API 是控制 OpenMVS 库导入导出的宏,通常会出现在 MVS 的头文件中。为了回答这个问题,我可以提供 MVS 代码中常见的定义方式,稍后会在代码中搜索 MVS_API。

2025-04-21 10:12:27 505

原创 using Hash_Map = std::map<Key, Value, std::less<Key>, Eigen::aligned_allocator<std::pair<const Key

部分含义有序映射容器(默认红黑树)升序排序(默认)防止 Eigen 类型内存对齐错误定义别名,方便多次使用。

2025-04-16 20:35:45 298

原创 python对pose轨迹做滤波

【代码】python对pose轨迹做滤波。

2025-04-16 16:57:45 94

原创 c++读取json文件

【代码】c++读取json文件。

2025-04-16 16:53:25 110

原创 c++常量成员函数

const放在成员函数后面是为了告诉编译器“这个函数不会修改对象内部状态”。这样做可以让你在const对象上调用它。是一种“承诺”,也是一种“限制”,可以帮助提高代码安全性和可读性。

2025-04-15 13:57:53 269

原创 python调用可执行文件添加参数启动一个进程

【代码】python调用可执行文件添加参数启动一个线程。

2025-04-11 11:55:31 88

原创 有一个变量 在有些线程没有加锁 有些线程加锁了,那我在这些加锁的线程中能起到对应的作用吗

锁只有在所有访问者都遵守的情况下才有意义。有加锁和没加锁混用 = 数据竞争 =。最好制定清晰的访问协议:谁、什么时机、用什么锁访问。对简单原子变量,可考虑。

2025-04-08 15:06:07 222

原创 保存编译的日志

如上命令可以在build 的路径下 找到 log.txt的文件 里面有对应的编译的所有的日志,包含错误的日志,方便排查,不然打印在命令行,很容易被刷掉,看不到真实的问题。将标准错误(文件描述符 2)重定向到标准输出(文件描述符 1),从而合并两者的输出。tee 命令将从管道接收到的输入同时写入文件 log.txt 和打印到终端。如果使用 tee -a,输出会被追加到文件末尾,而不是覆盖文件内容。编译命令,使用 8 个并行任务。上面的命令不懂可以发给大模型,让它解释一下。

2025-04-01 09:51:07 186

原创 读取exif文件 c++ exiv2库

1. 需要安装exiv2的库。

2025-01-17 15:21:14 229

原创 union find算法 c++

【代码】union find算法 c++

2024-12-12 20:30:29 265

原创 修复vscode显示找不到对应头文件的问题

2. 可以通过添加对应的路径到c_cpp_properties.json中修复。

2024-11-27 15:56:15 655

原创 openMVG使用gdb和vscode Debug

【代码】openMVG使用gdb和vscode Debug。

2024-11-11 15:25:17 489

原创 使用openMVG作为第三方库时出现的BUG

【代码】使用openMVG作为第三方库是出现的BUG。

2024-08-28 17:58:57 856

原创 ubuntu安装glomap

4. 对应ceres版本要求用新的eigen 3.4.0编译的,不能用之前的老的eigen编译的ceres. 注意直接安装ceres 1.14.0的话 会有较多的编译问题,我懒得解决这些bug, 直接安装了 ceres 2.0.0。1. 首先本地安装好colmap。5. 编译glomap。6. 打开glomap。

2024-08-02 17:06:53 777 1

原创 使用vscode的debug功能

3. 这个时候 只需要修改task的 -I 参数,填写为对应的Eigen的安装路径即可,如下所示。2. 有了代码之后,直接点击vscode的run 或者debug的话 一般会报错。1. 代码如下所示,需要包含Eigen的库,安装的话有很多教程,直接照着来就可以。4. 处理之后,可以编译通过,并且得到对应的输出,还可以进行debug。

2024-07-17 16:40:18 730

原创 求无序数组中的中值

【代码】求无序数组中的中值。

2024-07-17 15:20:32 154

原创 nvidia-container-runtime“: executable file not found in $path: unknown

【代码】nvidia-container-runtime“: executable file not found in $path: unknown。

2024-06-21 10:58:02 832

原创 nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtHSHMatmulAlgoInit, version libcublasLt.

以上报错极大的概率是 pytorch 版本和 本地cuda 版本不兼容。可以从如下网址 找一个适配的pytorch 即可。

2024-04-12 09:29:51 571 1

原创 open3D点云配准ICP

在查找相关点的时候,如果两个点匹配的距离比threshold小的话,那么这对关联是找不到的,所以这个参数还是很重要的,不然ICP容易失败。点云配准算法ICP中一个很重要的参数是 threshold。所以不是说 threshold越小越好。

2024-04-03 10:08:43 677 1

stlplus3的可以用cmake编译的资源

stlplus3的可以用cmake编译的资源

2025-05-08

MVS-synth datasets

是MVS-synth数据集的一个小子集

2023-06-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除