- 博客(175)
- 收藏
- 关注
原创 从零构建一个3D点云预览器:Python + PySide6 + pyqtgraph 实战
点云(Point Cloud)简单说就是三维空间里一大堆点的集合。每个点通常有三个坐标 ,有的还带颜色 或反射强度。你可以把它想象成夏夜的星空:每一颗星星就是一个点,只不过点云里的“星星”可能有几百万甚至上亿颗,而且它们不是随机分布,而是勾勒出物体或场景的形状。激光雷达(LiDAR)、结构光扫描仪、摄影测量(多张照片重建)都会产生点云。比如自动驾驶车顶的激光雷达扫一圈,就能得到周围环境的点云;用手机扫描房间,也能得到室内点云。拿到点云后,第一件事往往是看一看它长什么样——有没有噪声、范围多大、形状对不对。
2026-10-04 23:04:06
282
原创 C++11多线程模型
其中读者-写者和睡眠理发师是 Tanenbaum 书中明确讲到的两大经典 IPC 问题83.136.203,吸烟者和屏障属于常见补充。这些模型也对应后续章节讨论的"进程通信"与"死锁"章节——哲学家就餐用于演示死锁避免,睡眠理发师用于演示资源分配同步,读者-写者用于演示并发控制策略,建议对照原书一起看效果更好。代理每次随机放两种原料在桌上,拥有第三种原料的吸烟者才能卷烟并抽完,再通知代理继续。用于"多线程各自完成一段工作后,等所有线程都到达某点再继续"。核心:允许多个读者并发进入,写者独占。
2026-10-01 23:14:45
282
原创 C++11---function(可调用对象)
是 C++11 标准库中一个非常核心的工具。你可以把它看作一个它的核心作用是,让代码更灵活、更通用。
2026-08-11 23:31:20
227
原创 Qt中简单使用MQTT(一)
我的构建套件中只能选择MingGW 64bit和MSVC 2019 64Bit,我这里选择生成的是MingGW 64位。1.步骤:使用QtCreator打开上述的CMakeList.txt文件,并且选择构建套件。我们的QtCreator中是不带MQTT模块的,需要我们自己去下载。由于我用的是 Qt6.6.0 版本,下载是需要严格对应 6.6.0版本。2.选择release版本生成.a和.dll文件。好了,关于MOTT的使用就介绍到这里了。下,.h 文件需要全部复制过去。
2026-06-27 20:25:39
390
原创 Windows中网络编程selec模型和IOCP网络IO模型
select是一种模型。核心思想是:用一个线程同时监视多个 socket,当其中任意一个 socket 有数据可读/可写/异常时,select返回,然后程序逐个检查处理。
2026-06-23 23:46:28
296
原创 STL中的设计模式(二)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。:C++ 标准库并没有提供原生的信号/槽机制,但现代 C++ 实现观察者模式的标准惯用法是使用 std::vector<std::function>来管理订阅者列表。此外,C++20 引入的和也是观察者模式的一种具体应用(请求取消的通知机制)。
2026-05-24 16:24:50
406
原创 STL中的设计模式(一)
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。:这是 STL 的灵魂。STL 将算法与容器分离,而连接二者的桥梁就是迭代器。无论是vectorlist还是map,只要你提供begin()和end()std::sort或std::find就能无视底层数据结构(连续内存、链表节点、红黑树)进行遍历。
2026-05-24 16:24:08
434
原创 Qt中多线程QThread、QThreadPool、QConCurrent三种方式对比
QThread是 Qt 多线程的基石,本质上是对操作系统原生线程的面向对象封装。QThreadrun()QObject这是 Qt 官方推荐的做法。我们将创建一个 Worker 类,将其移入 QThread,通过信号槽触发任务并返回结果。
2026-05-24 15:07:10
466
原创 在QtCreator中用 QListWidget + QStackedWidget 模仿vs code TabWidget
/ 自定义编辑页Q_OBJECTpublic:// 面包屑导航栏");++i) {");");// 编辑器区域// ← 这里创建对象)");} else {m_editor->setPlainText("// " + filePath + "\n// 在此编辑文件内容...\n");if (!});
2026-05-10 22:35:28
399
原创 Qt多线程编程:QThread与QtConcurrent的对比与应用
在 Qt 多线程编程中,QThread和是两种最核心的并发机制。它们分别代表了和两种不同的设计哲学。以下是两者的深度对比、适用场景分析及代码示例,帮助你根据实际需求做出最佳选择。表格startwaitquit/exitexec()run()QThread。
2026-05-02 14:10:43
584
原创 OpenCV_目标追踪
OpenCV 中的目标追踪,简单来说就是让计算机在视频的第一帧“认识”一个物体后,能在后续所有的画面中自动锁定并跟随它。这项技术广泛应用于视频监控、自动驾驶、人机交互和医疗影像分析等领域。
2026-04-12 13:35:22
257
原创 使用Python做的一个简单的人脸识别项目
人脸识别是计算机视觉的经典应用场景,OpenCV 作为开源的计算机视觉库,提供了成熟的人脸检测与识别工具链。本次笔记聚焦于基于 OpenCV 的人脸检测(Haar 级联分类器)人脸识别(LBPH 算法)完整实现,从原理、步骤到代码全覆盖,适合入门学习与实战。
2026-03-22 14:20:35
467
原创 VC++中使用GDI+自定义绘制信号灯
说明:我这里使用了信号灯来显示串口的连接状态,以及通过串口获取显示下位机的状态,使用信号灯来显示。StatusIndicatorCtrl.h 头文件。
2026-03-16 23:14:10
64
原创 Qt中使用Zint库显示二维码
于是改用VS2022创建Qt项目,然后然后添加相关的库,就能调用Zint库中的函数生成二维码了。先使用的是QtCreator 创建项目,但是会报错。好了,项目就介绍到这里了。
2026-02-25 21:29:33
166
原创 第三章 异常(一)
核心思想:将资源的释放逻辑封装到析构函数中,利用析构函数 “自动调用” 的特性,避免手动释放资源的遗漏或异常导致的泄露(RAII 原则);关键做法:不要直接管理裸资源,而是用对象(如自定义资源管理类、标准库智能指针)包裹资源,让对象的生命周期与资源绑定;实践推荐:优先使用 C++ 标准库提供的智能指针(),而非手写资源管理类,避免重复造轮子且更安全。
2026-01-18 14:14:30
1081
原创 学习OpenCVSharp(一)
简单来说,OpenCVSharp 是OpenCV(Open Source Computer Vision Library)的 .NET 版本封装库。OpenCV 本身是用 C/C++ 编写的跨平台计算机视觉库,功能极其强大,但直接在 C#、VB.NET等 .NET 语言中使用会很麻烦。
2026-01-11 23:49:52
1235
原创 第二章 操作符(Operators)(二)
短路求值丢失&&和||重载后,无论左侧结果如何,右侧表达式都会被求值,违背 C++ 原生语义,极易导致逻辑错误(比如右侧有修改变量、访问空指针等副作用时)。求值顺序失控:重载后的&&||会被当作普通函数调用,参数求值顺序由编译器决定,而非原生的 “左到右” 固定顺序,程序行为不可预测。无任何益处:重载这三个运算符无法带来任何实际好处,反而会破坏代码的可读性和行为一致性,因此建议永远不要重载它们。
2026-01-10 20:47:22
666
原创 Qt面试题合集(五)
1.定位上,STL 是 C++ 标准库,通用、跨编译器 / 平台,侧重泛型算法和容器的高效性;Qt 自定义库是 Qt 生态的一部分,为 GUI 开发量身定制,深度绑定 Qt 的信号槽、元对象系统。2.核心差异体现在内存管理(Qt 的隐式共享 / 父子对象)、编码处理(QString 原生 Unicode)、跨平台细节(Qt 封装了系统差异);3.实际项目中,Qt 项目优先用 Qt 库(如 QString/QList),能简化 GUI 相关开发;非 Qt 场景或高性能计算用 STL;
2026-01-03 11:44:27
775
原创 第二章 操作符(Operators)
核心风险:定制的类型转换函数(转换构造函数、转换运算符)会触发隐式类型转换,导致代码行为不直观、逻辑漏洞甚至编译错误;规避方案用explicit修饰单参数构造函数,禁用隐式转换;避免定义这类转换运算符,改用显式的成员函数(如toInt()toString()核心原则:除非有极强的必要性,否则尽量避免自定义隐式类型转换,让类型转换 “显式可见”,保证代码的可读性和安全性。语法区分:前置式重载无参数,后置式重载带int哑元(仅用于区分,无需使用该参数);返回值规则:前置式返回T&
2026-01-02 13:44:11
810
原创 Qt面试题合集(四)
QPainter:轻量、灵活,适合简单绘制和自定义控件:功能完整,适合复杂交互式图形应用在实际开发中,可以根据需求选择或组合使用这两种方式。例如,可以在自定义控件中使用QPainter进行绘制,而在需要管理大量交互式图形时使用Graphics View框架。
2025-12-29 23:12:08
752
原创 Qt多线程同步实战(一)
前面介绍了线程同步类,下面我们来实战一下,实现一个比较经典的多线程售票问题。简化多线程开发,无需手动管理线程和条件变量。这是在Qt 版本≥5.15,使用。
2025-12-28 18:12:09
231
原创 Qt中线程同步类介绍(一)
QMutex是基础互斥锁,提供手动加解锁能力,核心作用是保护共享资源,但需严格保证lock()unlock()成对调用;是QMutex的封装,基于 RAII 机制自动管理锁的生命周期,能避免因异常 / 提前退出导致的死锁,是 Qt 中推荐的锁使用方式;实际开发中,优先使用 QMutexLocker,仅在需要手动精细控制解锁时机时(比如临界区中间需要临时解锁)才直接用 QMutex。
2025-12-28 18:06:46
376
原创 Qt面试题合集(二)
槽函数是否立即执行,核心取决于信号槽的连接类型和信号 / 槽所在线程;同线程 + 直接连接(或默认连接)→ 立即执行;跨线程 + 队列连接(或默认连接)→ 异步执行;默认连接(AutoConnection)是最优选择,Qt 会自动适配线程场景,避免手动指定连接类型的错误自定义事件类,子线程发送事件,主线程重写event()处理 UI:(较少用,适合复杂场景)底层操作系统 GUI 库线程不安全,且 Qt UI 组件未做线程安全保护;将 UI 操作委托给主线程执行,推荐用。
2025-12-14 15:06:20
1001
原创 Qt面试题合集(一)
Qt 对象树的核心目的是自动化管理 GUI 组件的内存,解决手动管理内存易出现的泄漏、野指针问题;同时实现了组件父子关系的联动(显示、事件、生命周期),适配 GUI 编程的场景特点;本质是将 GUI 组件的 “父子逻辑” 和 “内存生命周期” 绑定,大幅降低开发者的编程成本和出错概率。的核心作用是查询当前对象在对象树中的父对象指针,是 “子查父” 的核心接口;它不仅用于验证对象树关系,还能辅助获取父对象上下文、实现递归遍历、验证内存管理逻辑;注意parent()返回的是基类指针,需通过。
2025-12-14 15:05:22
686
原创 QScrollArea类和QSroller类的简单介绍
如果内容是自定义绘制(而非子部件),可继承QWidget重写paintEvent// 自定义绘制的内容部件protected:// 绘制大量内容(超出视口)i < 50;++i) {painter.drawText(10, 20 + i*30, QString("自定义绘制行 %1").arg(i+1));// 使用// 固定内容大小(超出滚动区域)类适用场景核心优势基础滚动需求(如固定内容、简单滚动)易用、内置滚动条、支持任意部件QScroller。
2025-12-09 23:19:52
911
1
原创 学习OpenCV(2)--- 图像基础容器Mat
Mat是一个类,由两个部分组成:①矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)。②一个指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的指针。矩阵头的尺寸是常数值,但矩阵本身尺寸会依图像的不同而不同,通常比矩阵头的尺寸大数个数量级。OpenCv使用了引用计数机制。其思路是让每一个Mat对象有自己的信息头,但共享同一个矩阵。这通过让矩阵指针指向同一地址而实现。
2025-12-07 14:10:56
1028
原创 Qt 小结
编译64位的Qt程序,但是用32位的MinGW cmd.exe的Windeployqt命令时,直接报错,我去MSVS构建套件下没有找到cmd.exe?!另外cmd.exe,它只用系统自带的;你要的是,而不是cmd.exe。
2025-11-26 23:17:46
499
原创 C#中并发集合---线程安全但无需加锁的高性能结构
C#中并发集合他们分别是ConCurrentQueue、ConcurrentDictionary、BlockingConllection。并发集合内部用,比你自己写 lock。下面我们来说别介绍他们。
2025-11-24 23:31:23
685
原创 MOTT简介
MQTT(Message Queuing Telemetry Transport)是一种轻量级的,专为设计,广泛应用于、移动应用、小型设备等领域。
2025-11-19 23:09:32
1167
原创 MFC中使用GDI+ 自定义等待界面
在工作中我们总是会遇到等待任务完成的场景,我们可以设置Windows自带的鼠标光标是等待的,沙漏(⏳),今天介绍使用GDI+在MFC程序中自定义简单的等待界面。
2025-11-15 15:04:46
517
原创 在Qt中使用QCustomPlot库
QCustomPlot是一个用于Qt应用程序中绘制高质量图表和图形的开源C++库,其提供了一个易于使用的API,允许开发人员创建各种类型的图表,如线图、散点图、柱状图、饼图等。以上就是在Qt中简单使用QCustomPlot的示例。
2025-11-02 15:41:32
415
原创 Qt中使用图表库
QChart 是 Qt Charts 模块的核心类,用于在 Qt 应用中创建和管理 2D 图表。它提供了一套高层次的 API,支持折线图、柱状图、饼图、散点图等多种常见图表类型,并内置了图例、坐标轴、动画、缩放、平移等交互功能。:作为 Qt 官方模块,QChart 与 Qt Widgets 和 Qt Quick 无缝结合,只需在。:支持 Windows、macOS、Linux 及嵌入式平台,保证一致的显示与交互效果。:内置缩放、平移、数据提示、主题切换及动画效果,无需额外开发即可实现专业级可视化体验。
2025-11-01 11:20:48
955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅