- 博客(19)
- 收藏
- 关注
原创 git中子模块问题的问题记录
charpt7/charpt_ws/src目录下还有一个.git目录,这就是为什么Git仍然认为它是一个嵌入的git仓库。需要先删除这个内部的git仓库信息。git add没有显示预期效果。
2025-12-23 16:11:10
365
原创 C++ 中的 lambda 表达式和 std::bind
值捕获:创建变量的副本。1.lambda内部使用的是外部变量的拷贝2.外部变量的修改不会影响lambda内部的副本3.lambda内部对副本的修改不会影响外部变量引用捕获:使用变量的引用1.lambda内部直接操作外部变量捕获情况[]:不捕获任何变量。[=]:通过值捕获所有外部变量。[&]:通过引用捕获所有外部变量。[x, &y]:通过值捕获x,通过引用捕获y。[=, &z]:通过值捕获所有外部变量,但通过引用捕获z。[&, a]:通过引用捕获所有外部变量,但通过值捕获a。[this]
2025-09-27 19:24:01
622
原创 atan()和atan2()区别
接收两个独立的坐标,它能“看到” x 和 y 都是正的,因此判断点在第一象限,返回。却只返回了 45度。因为它只关心斜率,无法知道分子和分母的正负,这就是。点 B 的斜率 = (-1) / (-1) =能“看到” x 和 y 都是负的,因此判断点在第三象限,返回。点 A 的斜率 = 1 / 1 =对于点 A(在第一象限),这个结果是正确的。但对于点 B(在第三象限),实际角度应该是。atan()和atan2()(等价于 225度)。
2025-09-25 20:16:29
267
原创 ROS2核心通信机制:从API调用到底层
你的ROS代码(API调用)↓ROS 2库(提供简单API)↓序列化(C++对象 → 二进制)↓TCP/UDP传输(选择可靠性)↓IP路由(找到目标地址)↓网络传输(电信号/无线波)↓反序列化(二进制 → C++对象)↓对方ROS代码收到数据。
2025-09-20 18:37:33
1151
1
原创 第三周OPENCV学习笔记
的图像处理技术,它通过重新分配图像像素的强度值,使图像的直方图分布更加均匀,从而改善图像的视觉效果。处理鼠标事件的重要函数setMouseCallback()双边滤波 (bilateralFilter)智能美颜。仿射变换 warpAffine()中间清晰向边缘逐渐模糊,适合需要自然过渡的模糊。高斯模糊 (GaussianBlur)背景虚化。让图像变模糊,适合需要快速简单模糊的场景。图像翻转 flip()convertTo()数据类型转换。normalize()归一化。
2025-06-18 10:51:55
402
原创 opencvc++学习笔记第二周
rectangle(目标图像,矩形区域,颜色,线条粗细(-1表示填充),线条类型,坐标点的小数点位数)applyColorMap(输入图像1/3通道,输出图像3通道,色彩映射类型)bitwise_and(第一个图像,第二个图象,输出图像) 交集。bitwise_or(第一个图像,第二个图象,输出图像) 并集。bitwise_not(输入图像,输出图像) 取反。split(输入的多通道图像,输出的单通道图像数组)resize(输入图像,输出图像,目标尺寸)输入图像若为三通道,则自动转为灰度图,再映射。
2025-05-22 21:49:28
616
原创 opencvc++学习笔记第一周
读取图像文件的函数Imread(读取图像文件路径,读取图像的方式)第二个参数:IMREAD_COLOR读取彩色,不读AIpha透明度(默认)IMREAD_GRAYSCALE用灰度模式读取IMREAD_UNCHANGED 读取包含BGR通道和AIpha通道返回值 成功则Mat对象,表示读取的图像失败则为空的 Mat对象在窗口中展示图像imshow(窗口名称,图像矩阵,Mat类型)显示窗口时间waitKey(time)time=0则表示无限等待,直到用户按下按键创建或设置一个窗口。
2025-05-20 09:27:14
651
原创 C++中的auto关键字
从 C++11 标准开始引入,它主要用于自动类型推导,让编译器根据变量的初始化表达式自动推断变量的类型,从而简化代码编写,提高代码的可读性和可维护性。在定义变量时,使用 auto 关键字代替具体的类型,编译器会根据初始化表达式自动推断变量的类型。
2025-02-05 10:01:16
212
原创 STL中的动态数组容器vector
vector内部通过动态内存分配来储存元素,它在堆上分配一块连续的内存空间来储存元素。当不断输入元素造成vector内存空间大于初始分配的内存空间时,它会通过重新分配空间并且另外开取一片更大的空间,将之前的数据复制并存入新的空间,并且释放先前的空间。通过索引访问 vector 中的元素,会进行越界检查,如果越界会抛出 std::out_of_range 异常。的大小,如果新大小大于原大小,新元素将被默认初始化;中的所有元素,使其大小变为 0,但容量可能不变。删除指定位置的元素或者指定范围的元素。
2025-02-01 23:21:08
286
原创 NULL和nullptr的区别
它的类型是std::nullptr_t,这是一种特殊的类型,可以隐式转换为任何指针类型,但不能转换为非指针类型。在这个例子中,编译器可能会将NULL解释为((void *)0),而在 C++ 中,从void*到其他指针类型(如int*)的转换不是隐式的,这可能会导致编译器发出警告或者错误,需要进行显式类型转换才能通过编译。这里,nullptr可以隐式地转换为int*类型,因为它的类型是std::nullptr_t,并且编译器知道它是一个空指针,符合函数func对于参数类型的要求,不会产生类型不匹配的问题。
2024-11-16 11:23:32
570
原创 二分查找-----精简版!不懂我吃?
(2.如果target >mid,把查找范围缩小到mid右边数组内的元素。(3.如果target<mid,把查找范围缩小到mid左边数组内的元素。4.重复以上3的步骤直到找到目标值或者搜索范围为空,也就是不存在这个值的意思。2.找中间值(left数组左边的边界 right数组右边的边界 )(1.如果target == mid,找到了。定义:在有序的数组中查找某一特定元素的位置的搜索算法。3.把中间值(mid)与目标值(target)进行比较。1.是否符合有序的条件。
2024-11-03 10:38:45
238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅