自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_43638873的博客

1014 福尔摩斯的约会 (20分)

  • 博客(538)
  • 资源 (3)
  • 问答 (8)
  • 收藏
  • 关注

转载 零件与装配体

这个过程,正是将一个没有结构层级的“几何数据包”(.stp),转化为一个符合机械设计逻辑、结构清晰、可分析、可管理的。您提的这两个问题非常棒,完全切中了机械设计和三维CAD软件的核心概念。让我为您做一个更详细、更精确的解释,并结合SolidWorks的语境来阐述。为了管理复杂的产品,我们还会用到“子装配体”的概念。而所谓的装配体是指2个以上的零件组成的功能模块?以下内容来自Gemini-2.5-Pro的镜像。所谓的零件是指构成机械装置的最小单元对吗?您的理解力非常强,抓住了最核心的区别!

2025-12-22 17:08:20 15

转载 利用Linux AIO写入十六进制文件

将410082字节的unsigned char数据转换为16进制格式。每2个字节组合成1个16进制数(4个16进制字符)使用Linux AIO异步I/O写入.hex文件。以1667列 × 123行的格式排布。

2025-12-02 19:12:02 18

转载 多线程环境下的单生产者单消费者(SPSC)队列

在高性能、高吞吐量环境下,SPSC 队列通常是性能最优的选择,但最终答案取决于你的具体架构约束。只要满足一个生产者线程对应一个消费者线程的模式,SPSC 就是最优选择。如果是一个生产者对应多个消费者,那么该怎么办呢?生产者分发 + 多个 SPSC(推荐)

2025-12-02 12:03:42 175

转载 如何将任意正整数换成大于或等于它最小的2的幂次方

解释一下这个函数的思想:核心思路1.目标:找到大于等于 n 的最小 2 的幂2.策略:先把最高位 1 右边的所有位都变成 1,然后加 1这里面比较关键的是“倍增思想”笨方法:逐位扩散对于 64 位数,最坏需要 63 次操作。图解倍增过程倍增的本质所以:8 位数最多需要:移 1, 2, 4 → 3 次16 位数最多需要:移 1, 2, 4, 8 → 4 次32 位数最多需要:移 1, 2, 4, 8, 16 → 5 次。

2025-11-30 21:34:56 20

转载 将一批unsigned char的数据快速高效的拷贝到std::vector<unsigned char>

最简洁高效,一次分配 + 一次拷贝。3.使用 memcpy(最快)1.构造时直接初始化(推荐)2.assign() 方法。4.insert() 方法。

2025-11-30 18:48:49 28

转载 在Ubuntu 22.04上实时监视本机内存资源占用的情况

基于C++写一个在Ubuntu 22.04上运行的程序,实时监视本机内存资源占用的情况。

2025-11-26 22:14:37 58

转载 在Ubuntu22.04上实时监视本机的CPU资源占用情况

我在另一个终端上执行命令stress --cpu 4 --timeout 30,然后依然启动了程序得到了如图所示的输出内容。基于C++写一个在Ubuntu 22.04上运行的程序,实时监视本机内存资源占用的情况。

2025-11-26 21:36:51 27

转载 在Ubuntu 22.04上实时监控CPU温度的C++程序

基于C++, 写一个在Ubuntu 22.04上运行并实时监控CPU温度的程序。

2025-11-26 17:47:09 49

转载 C++ 线程实现看门狗应用的简单方法

由于虚拟内存管理的复杂性(例如我们会运行不同的应用程序、使用不同的编译器等),虚拟地址与物理内存(DRAM)之间并非直接对应。在我们的应用中,线程 threadOne 和 threadTwo 在系统中执行具体任务(例如,一个线程负责读取操作,另一个线程负责发送操作)。每个进程可以表示为代码、数据(进程开始运行时加载的静态数据)、堆(动态分配的内存)和栈(在程序执行时增长和缩小的内存——它以 LIFO 顺序组织——后进先出 Last In First Out)。请参考下图,它描述了进程和线程之间的区别。

2025-11-11 22:16:22 33

转载 “滑动窗口算法”简介

所以,我们的窗口和现在变成 1。对于下一个子数组,它向右滑动一个位置,从左侧去掉第 0 个索引,并在右侧添加第 3 个索引。同样地,我们再次将窗口滑动一个索引单位,得到新的窗口和为 2。要计算第 2 个子数组的和,我们减去移出的数字(第 0 个索引处的 1),然后加上移入的数字(第 3 个索引处的 2)这是因为,在第一个循环中,我们必须找到第 1 个窗口的和。我遍历数组,对于数组中的每一项,我遍历接下来的 k 项,找到它们的和,如果当前窗口和大于现有的最大和,则将当前窗口和赋值给最大和变量。

2025-11-11 17:50:53 30

转载 在C++中利用正则表达式从字符串中获取数字内容

std::smatch 是 C++ 标准库中用于存储正则表达式匹配结果的容器类型。之前的代码中因为只设置了一个捕获组,所以match[0]和match[1]相同。match[1]:存储第一个捕获组的内容(第一对括号 () 内匹配的内容)那么在这几句代码中,使用match[0]和match[1]有什么区别吗?match[0]:存储完整匹配的内容(整个正则表达式匹配到的字符串)这段代码的作用是从文件名中提取第一个数字并返回。(2) 专门用于存储 std::string 的正则匹配结果。示例 1:带前缀的匹配。

2025-10-21 10:43:27 63

转载 C++ Vector重新分配内存而导致的程序崩溃

当 filename_storage 进行 push_back 时,如果vector需要重新分配内存,之前保存的 c_str() 指针会全部失效!重新运行后,暂时成功了,接下来还要继续。

2025-10-20 12:22:15 34

转载 Qt6中的for循环语句导致vector越界

row 是 uint32_t,用 row >= 0 的判断永远为真:当 row 为 0 时,再做 row-- 后会变成 UINT32_MAX,循环不会终止。这会造成无限循环或越界访问。再次运行后就没有这种情况了。

2025-10-17 21:09:20 46

转载 Qt6项目编译中出现: ‘byte‘: ambiguous symbol

你的项目使用了 -std:c++17 标准,C++17引入了 std::byte 类型。或其他方式将 std::byte 引入到全局命名空间时,就会与Windows SDK头文件中的 byte 产生冲突。Qt 6 明确要求 std::byte 必须可用,但之前的建议设置了 -D_HAS_STD_BYTE=0,导致 Qt 无法编译。Qt 6.10.0 在 qtypes.h 中强制检查 std::byte 的可用性,禁用它会导致编译失败。C++17标准库 中的 std::byte(来自 )

2025-10-17 10:25:36 50

转载 如何利用libtiff读取tif格式的16位单通道灰度图像

给出比较安全的函数案例。

2025-10-13 18:36:36 50

转载 Qt6如何读取到文本文件的第一行内容

QTextStream::readLine() 在 Qt(包括 Qt6)中的作用,是从文本流(QTextStream 关联的设备 / 源)中读取 一行文字,并把那行文字作为 QString 返回。QString::trimmed() 在 Qt6 中的作用是 移除字符串开头和结尾处的空白字符(whitespace characters),返回一个新的 QString,而不改变原来的字符串。如果那一行本来就是空行(也就是仅有行结束符,没有其它字符),readLine() 返回的是空字符串(不是 null)

2025-10-04 02:41:30 112

转载 Qt6获取文件扩展名

Qt 另有 completeSuffix() 可以返回“最后所有点之后的部分”(比如 archive.tar.gz 的 completeSuffix 是 “tar.gz”)(2) 如果文件名是 “archive.tar.gz”,suffix() 只返回 “gz”(因为它是“最后一个点之后”的部分)(1) 如果文件名是 “hello.txt”,那么 suffix() 返回 “txt”(3) 如果文件名没有点(.),那么 suffix() 返回空字符串 “”

2025-10-04 02:04:00 90

转载 关于在Windows 10上Qt6程序断点调试失效的解决办法

这是比较异常的,因为在 Windows 上用 MSVC 编译、在 Qt Creator 上调试,通常是用 CDB(Visual Studio 的 Windows 调试器 / Debugging Tools for Windows) 而不是 GDB。去Qt Maintenance Tool安装一下和CDB相关的支持组件(注意和Qt版本兼容),以及安装一下“Qt Debug Information Files”,就解决问题了。这说明:你当前的调试器是 GDB,而不是 CDB。看来我有必要执行安装了。

2025-10-03 23:24:16 108

转载 在图像处理中直方图的重要性

通常把数据分成 bins(区段),例如把灰度值分成 256 个 bin(每个灰度值一个箱子),或者更粗略一些的箱子(多个相邻灰度值归到同一个箱子)来减少噪声。若用线性拉伸或直方图均衡来扩展灰度值范围(例如把 80 映射到 0,把 120 映射到 255,中间线性映射),就可以提高对比度,使暗部和亮部细节更明显。在一幅灰度图像中(比如 8 位图像),可能的灰度值有 0 至 255,那直方图就会是一个横轴表示灰度值、纵轴表示对应像素数目的柱状图。在图像处理中,直方图通常是指“像素灰度值(或强度值)”的分布图。

2025-10-02 23:50:34 89

转载 Qt6中的redefinition of default argument

默认参数不能被重新定义,若函数已在别处拥有默认值,定义处就不能再写默认值。C++ 的默认实参是在调用点生效的(编译器在调用处补上默认值),因此应把默认值放在调用方可见的声明里(通常是 .h),而定义处(通常是 .cpp)不要再写,否则就成了“重复定义”。这也是为什么“在声明处给默认值、在定义处不写”是惯例做法。这样调用方只包含头文件即可获得默认行为,同时实现处没有默认值的重复风险。关于默认参数位置与限制也请注意“默认参数必须在形参列表末尾”等规则。

2025-10-02 14:06:57 40

转载 基于Python检查文件名是否为浮点数

写一个检查文件名的程序,检查一个文件的文件名在抛出了目录名称和文件扩展名之后,剩下的部分是不是一个浮点数?

2025-09-26 15:36:51 44

转载 基于PySide6弹出警告窗口

【代码】基于PySide6弹出警告窗口。

2025-09-25 14:22:04 112

转载 使用PySide6的Python程序生成一个有3个按钮的界面

利用PySide6编写一个Pytho交互式界面程序, 标题为“可视化系统”,界面上有3个按钮控件,分别名为A、B、C。

2025-09-24 16:41:52 160

转载 如何在点击可视化的三维地形图上的点就能当场得到坐标数据

被拾取的点可以是在第一个相交的网格(mesh)上的点,或是在 3D 窗口中的点。容差就是指定一个允许的距离范围(在屏幕空间或世界空间中)——如果一个几何点落在这个容差范围内,也算作被“拾取”了。当发生一次拾取操作(pick)之后,系统会调用你提供的 “callable” —— 也就是你传入的那个函数或可调用对象 —— 并把被拾取的点(picked point)作为它的第一个参数。渲染窗口的尺寸是按对角线计算的。“picker” 的选择将决定点拾取(point picking)的具体执行方式。

2025-09-24 10:29:57 59

转载 基于PySide6的遍历文件目录的Python程序

在务必用到PySide6的情况下,基于Python写一个能选择文件目录并遍历的程序,同时记录下并输出所有的文件名(不包含目录名),并且记录目录名称。选择文件目录的方式是让用户按按钮。

2025-09-24 10:00:36 53

转载 关于pyvista.Plotter.enable_trackball_style

或者,也可以使用 Ctrl + Shift + 左键 或鼠标滚轮 进行缩放,Shift + 左键 用于平移。轨迹球摄像机是默认的交互器样式。移动鼠标时会绕着场景旋转摄像机,而不改变场景本身。将交互样式设置为 Trackball Camera(轨迹球摄像机)。Ctrl + 左键 用于围绕摄像机的视线轴旋转视图。

2025-09-24 08:55:55 70

转载 关于“下采样”

在机器学习中,下采样还有一个常用含义,是指在数据集中减少多数类别(majority class)的样本数,以处理类别不平衡问题。在数字信号处理(DSP, Digital Signal Processing)中,下采样(downsampling,也叫 decimation)指的是将一个离散信号的采样率降低:即在保留某些原始采样点的同时,舍弃其他采样点,从而缩短信号中样本点的密度。(3) 防止冗余信息:在信号或图像中,高频成分可能在某些任务中并不重要,下采样可以滤除这些不必要的信息,有时有助于降噪或压缩。

2025-09-23 21:15:15 130

转载 PyQt6中的QSpinBox (PySide6.QtWidgets.QSpinBox)

最小值、最大值以及步长可以在构造函数中设置,也可以之后通过 setMinimum()、setMaximum() 和 setSingleStep() 来修改。Spin Box 中的文本可通过 text() 获取(包括任何前缀/后缀),或者通过 cleanText() 获取(不含前缀、后缀,也不含前导或后导空白字符)。用户也可以手动输入该值。Spin box 支持整数值,但可以通过重写 validate()、textFromValue() 和 valueFromText() 来扩展为使用不同的字符串表示。

2025-09-23 20:32:01 77

转载 OpenGL图形学开发中的“法线”

顶点通常是许多面共享的点,为了让光照看起来平滑,人们一般把这些面片的法线先算出来,然后对共享顶点上的这些面片法线求平均,再单位化。在曲面处(非平面多边形),每个顶点通常都有一个法线(vertex normal),这可以使光照看起来更平滑(Smooth shading)。通常再做单位化处理。(2) 通常我们使用单位法线(unit normal),也就是长度为1的向量,这样在后续光照计算中更方便(避免因长度不同引入误差)。对于隐式定义的曲面 F(x, y, z) = 0,则法线是梯度 ∇F(x, y, z)。

2025-09-23 00:52:13 176

转载 LCR 106. 判断二分图

来自: https://leetcode.cn/problems/vEAB3K/description/?

2025-09-21 17:56:31 41

转载 LCR 105 岛屿的最大面积

题目来自: https://leetcode.cn/problems/ZL6zAn/description/?

2025-09-21 09:48:13 27

转载 RANSAC及所谓“内点”和“外点”

RANSAC(Random Sample Consensus,随机采样一致性)是一种鲁棒模型估计方法:当数据里混着大量错误匹配或异常值(外点)时,仍能估出可靠的模型(如直线、单应性 H、基础矩阵 F、PnP 位姿等)。随机抽取最少数目的样本,估计一个候选模型,用这个模型检验所有观测数据点,判断哪些是内点(小于误差阈值),哪些为外点,验证这个模型被多少点支持。定义:针对“当前的候选模型”,若某个观测的残差(如点到线/面/重投影的距离)小于阈值,它就是内点;最后选普适程度最高的拟合模型作为整体模型。

2025-09-19 19:26:38 72

转载 在图像配准/拼接中,所谓的“特征点坐标”(或“关键点坐标“)

关键点坐标”并不是把一整片像素都当成坐标,而是从那片局部区域里选一个在数学上明确、可重复检测的“代表位置”(通常是局部响应的极值点),再把与它有关的**尺度(size/σ)与方向(angle/θ)**一起记录下来。随后,描述子会围绕这个锚点,按其尺度(决定补丁大小)和方向(决定旋转对齐)去取局部统计,从而把“多像素信息”编码进一个特征向量,但坐标本身仍是那个极值点的位置。在图像配准/拼接中, 所谓的图像中的关键点其实就是特征点,而特征点是由不止一个像素组成的,那么所谓“关键点坐标”是怎么来的?

2025-09-19 16:11:47 67

转载 OpenCV C++中的BFMatcher

如果设为 true,则 Matcher 只返回那些匹配对 (i, j),满足 A 集合的第 i 个描述子在 B 集合中与第 j 个描述子是最优匹配,且反过来 B 集合的第 j 个描述子在 A 集合中与第 i 个描述子也是最优匹配。ORB 的描述子是二进制描述子,完全可以配合 cv::BFMatcher::knnMatch() 使用——常见做法是设置 k=2,再对两邻近匹配做 Lowe 的 ratio test(比值测试) 来筛掉歧义匹配;在这里,我们将看一个简单的例子,演示如何在两张图像之间进行特征匹配。

2025-09-19 14:21:27 55

转载 图像配准/拼接时的KNN + 比值检验

由此也能看出,在图像配准/拼接中,KNN之所以会选择提取不止一个最近的描述子,也是因为考虑到可能会出现”这个点有多种可能匹配(模棱两可)“的情况。KNN 的作用就是在 B 图的描述子矩阵中,找到离 A 图每个描述子最近的前 k 个描述子,并提取出来用于后续检验。如果 d1 和 d2 很接近,说明这个点有多种可能匹配(模棱两可),容易出错 → 应该舍弃。单看 d1 的绝对大小不可靠,因为不同图像对比时距离分布可能差别很大。如果 d1 明显小于 d2,说明最优匹配“胜出明显”,可信度更高。

2025-09-18 22:41:32 35

转载 ORB特征提取器的detectAndCompute函数

你给它一张图(可选遮罩),它吐出一组 cv::KeyPoint 和对应的二进制描述子矩阵 cv::Mat。特征点负责告诉我们 “在哪里” 有特征,但要想把图像 A 的点和图像 B 的点对应起来,只靠坐标是不够的——因为同一物体在不同视角、光照下的像素会差异很大。表示一个尺度空间里的特征点,不仅有像素坐标,还带着“多尺度、多方向”的信息,便于旋转/尺度不变的特征描述与匹配。若 true:跳过检测,把你传入的 keypoints 当作现成点,只执行后续步骤(常用于你自己挑点或跨算法混合的场景)。

2025-09-18 17:21:05 120

转载 在”RANSAC 单应性“中所谓的单应性

RANSAC的目的就是要检查哪一种单应性矩阵所描述的几何变换在众多特征点中最具普适性,然后最具普适性的几何变换的单应性就是最终的单应性.只要两张图像中对应的内容是来自同一个平面,并且这个平面在拍摄过程中没有变形,那么这两张图之间的几何关系就能用单应性来表示。RANSAC 的作用:在大量点对中 随机采样少量点(通常 4 个点就能解单应性矩阵),计算出一个候选单应性矩阵 H。这样,RANSAC + 单应性就能在有噪声和错误匹配的情况下,鲁棒地求出两个平面图像之间的投影关系。平移(translation)

2025-09-18 14:35:43 56

转载 解释一下BSQ格式

BSQ格式因其​​按波段连续存储​​的特性,在需要​​高效访问或处理单个波段整个空间数据​​的场景下表现出色,尤其适合​​波段数非常多​​的高光谱或超光谱影像。但它的主要代价在于​​跨波段访问特定空间位置的数据可能不够高效​​,并且需要​​依赖额外的头文件(.hdr)​​ 来定义数据结构和元数据才能被正确解析和使用。​​图像数据文件​​:遥感CCT的核心文件,图像数据按照卫星扫描的次序存放,一个扫描行对应一个记录。​​尾部文件​​:包含了图像数据进行增强处理时所需要的一些基础数据,例如大气散射校正的基值。

2025-09-17 16:44:12 80

转载 Visual Studio出现cv::findDecoder imread_(‘‘): can‘t open/read file: check file path/integrity

我的程序采用的是Debug,原本在设置链接库时我用的是opencv_world4100.lib和opencv_world4100d.lib,于是我改成了只用opencv_world4100d.lib。混用会崩溃(常见于 memcpy/std::string/容器复制时出现 0xC0000005),因为两边使用不同的运行时与调试级别。Debug 需链接带 d 后缀的库/DLL(如 opencv_world4xxd.lib/.dll、Qt6Cored.dll);简单的说,Debug 便于排错、可观察性强但慢;

2025-09-17 15:38:42 83

转载 如何基于C++ 11判断一个double变量存放的数是整数还是小数

【代码】如何基于C++ 11判断一个double变量存放的数是整数还是小数。

2025-09-17 02:10:50 65

VNC-Viewer-6.21.406-Linux-x64.deb

可用于控制树梅派的远程桌面软件的VNC Viewer安装包

2021-06-07

农业无线传感器Json数据解析.zip

这个是上一个JsonApp的升级版,用于解析无线传感器的Json数据并以表格形式显示,解析的json文件名为data.json,我已经放在了这个压缩包里,压缩包里还有一个压缩包,叫做JsonApp.zip,里面有我的源码

2021-05-26

JsonApp.zip

自己用Qt写的Json解析程序

2021-05-24

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

TA关注的人

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