- 博客(114)
- 收藏
- 关注
原创 Qt视频监控系统开发实战:从视频捕获到照片管理
本项目是一个基于Qt框架的视频监控系统,实现了视频捕获、本地显示、网络广播、视频录制、拍照、照片管理等功能。未来,随着技术的不断发展,视频监控系统将朝着更加智能化、网络化和高清化的方向发展,我们可以在此基础上不断探索和创新,开发出更加先进和实用的视频监控解决方案。**解决方案**:实现了完整的缓冲区请求、映射、入队/出队流程,确保视频数据的正确处理。**解决方案**:使用条件编译,为不同平台提供不同的实现,确保代码的可移植性。**解决方案**:使用多线程技术,将视频捕获与UI更新分离,减少主线程负担。
2026-02-02 19:57:26
573
原创 c语言高级议题
含义是,如果表达式 expression 的值为真,则编译 some statements,否则不编译。此处,将这种函数指针类型 void (*)(int) 用 typedef 抽取出来,定义了一个别名叫。含义是,如果定义了宏 MACRO,则编译 some statements,否则不编译。含义是,如果没定义宏 MACRO,则编译 some statements,否则不编译。1,在宏的内部,定义了两个变量_a 和_b 来替换 a 和 b,防止 a 和 b 出现多次。
2026-02-02 15:28:57
427
原创 c语言枚举
围”的整型数据,超出范围便无意义,比如指定颜色变量 color 只能是{1,2,3},分别代表。green 和 blue,代码中并没有给他们赋值,所以他们的值都是缺省的,从 0 开始递增,所。方式:第一,直接使用。第三,便是这里的枚举常量,比如例子中的 red、上述代码中的第 4 行定义了一个枚举常量列表,事实上在 C 语言中,使用常量有三种。C 语言中枚举数据是很坑爹的,是一类被阉割了的类型,本来枚举是一种所谓“指定范。言的枚举纯粹就是整型,可以给他赋任意的整数,并没有体现枚举“指定范围”的特点。
2026-02-02 15:04:00
232
原创 FreeRTOS 的任务与 Linux
特性FreeRTOS 任务 (Task)Linux 线程 (Pthread/LWP)内存可见性全局可见(扁平内存模型)进程内可见,进程间隔离硬件访问直接访问(寄存器操作)通过系统调用(驱动程序)调度核心严格实时(高优先级必抢占)公平优先(兼顾所有线程)运行权限特权模式 (通常)用户模式切换开销极低 (保存寄存器即可)中等 (涉及内核态切换、信号处理)崩溃后果往往导致系统复位导致进程终止(通常不影响系统)适用场景电机控制、传感器采集、硬实时响应服务器并发、UI交互、复杂计算。
2026-01-29 20:19:45
769
原创 异步回调的用法
回调 = 把一个函数当参数,交给别人,让它在合适的时候帮你调用异步回调是一种编程机制:程序发起操作后不阻塞等待,当操作完成或事件发生时,由系统或框架自动调用用户提供的回调函数进行处理。
2026-01-29 16:16:18
540
原创 I/O 编程技术
不存在就创建,从程序的执行结果来看,获得的文件描述符 fd 等于 3,这是因为 0、1 和 2。(API),即系统调用,也可以使用由标准 C 库提供的标准 IO 函数,他们的关系如图所示。色标注的那一层,就是这所谓的系统调用接口,这几百个函数是非常精炼的(Windows 系。库函数中,有一组函数也是专门针对文件操作的,被称为“标准 IO”,他们是工作在不同。能需要用到更加丰富的功能,因此就开发了很多库,其中最重要的也是应用程序必备的库就。
2026-01-28 16:01:46
325
原创 c语言更进一步
显示的是一个占据了 4 个字节的 int 型数据(值为 0x00000007),每一个字节都有其对应的地址,编译器会将最小的地址 0x0A33FF04 作为整个 int 型数据的地址,这个最小的地址就是所谓的基地址。运行到下一个恰当的某个时候再赋值,这期间就有个空档期,此空档期内指针 p 的值将是。的大厨,然后你在调用前台小妹的同时,将大厨的电话号码也给到她,小妹在需要做饭的时。你传递给小妹的电话号码,相当于一个能找到大厨。1,当无法确定一个地址所对应的内存的数据类型时,将该地址类型定为 void 型,
2026-01-27 20:32:27
539
原创 一篇文章带你速成STM32裸机开发--基于实际代码
72 * xus默认返回 0没按键 → 所有if不进 → 返回 0volatile是在对编译器说:“这个变量不归你管,老老实实每次去内存拿。5.定时器中断/*** 函 数:定时中断初始化* 参 数:无* 返 回 值:无*//*开启时钟*///开启TIM2的时钟/*配置时钟源*///选择TIM2为内部时钟,若不调用此函数,TIM默认也为内部时钟/*时基单元初始化*///定义结构体变量//时钟分频,选择不分频,此参数用于配置滤波器时钟,不影响时基单元功能。
2026-01-27 14:29:16
1149
原创 详解MetaFormerBlock模块
你可以把这个类看作是一个标准的三明治模具。以前的 YOLO Bottleneck结构:卷积 -> 卷积。特点:简单粗暴,视野比较窄。现在的 MetaFormerBlock结构:混合(Mixer) -> 残差 -> 思考(MLP) -> 残差。关键点:它强行把“提取空间特征”(Mixer)和“提取通道特征”(MLP)分开了。好处:这种结构被证明(在 Transformer 论文中)泛化能力更强,能学到更本质的特征。“我是 MetaFormerBlock。
2026-01-23 13:28:38
306
1
原创 linux 进程学习之信号
1️⃣fork()产生父子进程2️⃣ 父进程用kill()发信号3️⃣ 子进程用signal()接信号4️⃣ 信号来了,自动执行回调函数printf("这里是信号响应函数 %d \n" , arg );// 设置信号响应的函数// 初始化信号集// 将信号集清空// 将指定的一个信号添加到信号集中// 将指定的一个信号添加到信号集中// 设置阻塞信号集中的信号// 把信号集中的信号设置为阻塞状态// 给自己发送 3.4 号信号raise(3);raise(4);
2026-01-22 17:51:10
536
原创 C语言联合体union的用法(非常详细,附带示例)
联合体的定义语法与结构体类似,但使用 union 关键字代替 struct,以下是联合体的定义语法:union 联合体名称 {数据类型1 成员1;数据类型2 成员2;...数据类型n 成员n;在这个语法中,union是关键字,用于声明一个联合体。联合体名称是我们自定义的类型名称,符合C语言标识符命名规则。大括号内列出了联合体的所有成员,每个成员都有自己的数据类型和名称。注意,定义联合体是一个完整的语法,最后的分号;不能省略。
2026-01-22 16:15:26
650
原创 FreeRTOS 提供 软件实现的定时器
因为:你已经用的是FreeRTOS所有逻辑都在:任务软件定时器👉loop()只是 Arduino 的历史遗留。
2026-01-22 14:08:24
500
原创 freertos ----mutex 互斥锁例程
Mutex = 一把钥匙共享资源 = 一个上锁的箱子(库存)拿到钥匙的任务👉 才能动库存没钥匙的任务👉 必须等// 拿钥匙// 还钥匙// 👇👇👇 这里就是临界区// 👆👆👆👉被 Mutex 保护的代码块就叫临界区本程序通过 FreeRTOS 的 Mutex 机制,对多个任务访问共享库存变量的临界区进行保护,避免了由于任务并发执行导致的数据竞争和库存超卖问题。
2026-01-22 12:52:50
708
原创 刷题日记-------二叉树层序遍历
给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。root = [1][[1]]root = [][]好,这段代码是,也就是。我按「」来给你拆,像老师板书那种 👍。
2026-01-19 19:42:44
595
原创 一文入门Linux进程线程
线程实际上是应用层的概念,在 Linux 内核中,所有的调度实体都被称为任务(task),他们之间的区别是:有些任务自己拥有一套完整的资源,而有些任务彼此之间共享一套资源。正“活的”、动态的进程(process),因此进程是一个动态变化的过程,是一出有始有终。套资源还是跟别人共享,因此右边的多个调度实体(线程)的进程就比单个调度实体的进程。但线程给我们的不止这些,虽然一个进程内部的多条线程共享了大部分资源,但是还是。的戏,而程序文件只是这一系列动作的原始蓝本,是一个静态的剧本。地方:他会使得进程一分为二!
2026-01-19 14:48:20
823
原创 时间复杂度和空间复杂度
这个程序随着数据变多,占用的额外内存会多多少?开数组 / vector / new n →。“这个程序随着数据变多,跑得会慢多少?空间:vector 存 n 个元素 →。n = 100 → 执行 100 次。很多人会以为是 O(n) 空间 ❌。n = 10 → 执行 10 次。来描述“趋势”,不是精确时间。时间:for 跑 n 次 →。(二分、折半、查找常见)for 套 for →。总共 n × n 次。砍多少次才能到 1?n 多大,数组就多大。递归 = 看递归深度。
2026-01-11 15:03:47
403
原创 c++qt开发第三天 摄像头采集视频
👉 摄像头取一帧👉 包装成 QImage👉 要么发给 UI 显示👉 要么压缩后 UDP 广播👉 再把 buffer 还给驱动信号槽 + 线程调用关系图太好了 👍这一块一旦想通,Qt 线程 + 信号槽你就算“过关”了。下面我给你不用 Qt 术语、用工程思维来讲,再配一张“脑中必须有的调用关系图”。
2026-01-07 16:41:07
1240
原创 刷题日记 合并区间
意思:输入是输出也是同样格式👉 用来存已经合并好的区间先按起点排序,然后遍历区间:若当前区间与结果数组最后一个区间不重叠,则直接加入;否则合并并更新右端点。++i){if(!else{
2026-01-07 11:13:20
484
原创 c++ QT 开发第二天,用ui按钮点亮实体led
为什么不 deletepushButton?pushButton的父对象是MainWindowQt 会自动释放所有子对象所以这里什么都不用写程序启动↓创建窗口↓创建按钮 + 居中↓绑定 LED 文件↓读取 LED 当前状态↓用户点击按钮↓读取当前状态↓写入相反状态 (0/1)↓更新按钮文字信号 / 槽。
2026-01-06 16:14:57
1216
原创 c++ qt开发第一天 hello world
ui(new Ui::MainWindow) // 动态创建界面对象。// 将 ui 文件中设计的控件加载到当前 MainWindow 对象中。// Qt 命名空间开始(用于兼容 Qt4 / Qt5 / Qt6)// 用于访问 ui 中设计的控件(按钮、标签等)// 声明 Ui 命名空间中的 MainWindow 类。// 引入 Qt 中的主窗口类 QMainWindow。// 显示主窗口(如果不调用,窗口不会显示)// 该文件定义了 Ui::MainWindow 类。
2026-01-06 14:15:56
334
原创 刷题日记 2026.1.6 最大子序和
请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。我回顾我最光辉的时刻就是和不同人在一起,变得更好的最长连续时刻。如果我和你在一起会变得更好,那我们就在一起,否则我就丢下你。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。
2026-01-06 11:19:57
225
原创 刷题日记 相交链表
请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。,函数返回结果后,链表必须。
2026-01-05 11:49:19
1092
原创 无人机按点飞行脚本
指定使用系统中的 python 解释器来运行该脚本(Linux 下 ROS 必须)# ROS 的 Python 客户端库,用于节点、话题、服务等操作# MAVROS 的 Python 接口库,用于和飞控(PX4/ArduPilot)通信# 引入带时间戳的位姿消息,用于发布位置控制指令# 引入飞控状态消息(连接状态、模式、解锁状态等)# 引入解锁服务(CommandBool)和模式切换服务(SetMode)# 引入三维点类型(这里其实没用到,可以删)
2026-01-04 19:10:18
1005
原创 c++ find 算法
i < 10;++i)if(it!elsepublic:elseint m_Age;elseint main()//test01();test02();return 0;
2026-01-04 17:51:31
388
原创 c++ transform算法
public:public:i < 10;i++)cout<<endl;int main()test01();return 0;
2026-01-04 17:34:07
275
原创 c++ 内建函数对象
#include <iostream>#include <string>#include <fstream>#include <vector>#include <algorithm>#include <deque>#include <stack>#include <queue>#include <list>#include <set>#include <map>#include <functional>using namespace std;void test(){ negate<int> n;
2026-01-04 12:14:45
466
原创 c++ 函数对象
public:public:MyPrint()int count;int main()//test01();//test02();test03();return 0;
2026-01-04 11:35:23
272
原创 c++ STL案例-----------员工分组
public:i < 5;i++)Worker w;it!= v.end();it++)for (;pos!index = 0;for (;pos!index = 0;for (;pos!int main()it!= v.end();it++)return 0;
2026-01-03 18:25:25
1148
原创 c++ map容器
it!= m.end();it++)m[5] = 50;m3=m;elsem[3]=30;m.erase(2);m[3]=30;if(it!=m.end())elsepublic:m[3]=30;it!=m.end();it++)int main()//test01();//test02();//test03();//test04();test05();return 0。
2026-01-03 17:47:35
419
原创 c++ set容器
it!= s.end();it++)elseelseelseit!= ms.end();it++)public:it!= s5.end();it++)public:int m_Age;public:it!= s1.end();it++)int main()//test01();//test02();//test03();//test05();test06()
2026-01-02 19:54:45
440
原创 c++ list容器
it!= l.end();it++)l.swap(l2);elsel.clear();public:int m_Age;it!= l.end();it++)int main()//test01();//test02();//test03();//test04();test05();
2026-01-02 19:17:37
500
原创 c++ 容器 queue
public:int age;q.push(p1);q.push(p2);q.push(p3);while (!q.empty())q.pop();int main()test01();return 0;
2025-12-26 14:27:35
270
原创 c++ 容器 stack
s.push(1);s.push(2);s.push(3);s.push(4);while(!s.empty())s.pop();int main()test01();return 0;
2025-12-26 14:18:24
379
原创 c++ 容器案例--评委打分
public:int score;i < 5;i++)it!= v.end();it++)i < 10;i++)dit!= d.end();dit++)cout<<endl;dit!= d.end();dit++)it!= v.end();it++)int main()it!= v.end();it++)show(v);
2025-12-23 16:18:00
1245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅