自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 opencv入门(8)图象像素的逻辑操作

三种逻辑运算 与 或 非。

2025-07-02 17:16:38 275 1

原创 opencv入门(7) opencv自带的颜色表操作

1.原始图片地址 2.输出地址 3.选择的样式。

2025-07-02 16:00:08 156

原创 opencv入门(6) TrackBar调整图片和键盘响应

createTrackbar(“Value bar”, “亮度调整”, &lightness, max_value, on_tract);alpha 是 src1的权重,beta是src2的权重,gamma加到最终结果的标量值用于调整图像的整体亮度。5.trackbar改变时的回调函数 6. 带入回调函数的数据,可以不用带,是一个void指针。对比度是两个像素点的差值,增加对比度,会让两个像素点之间的差距会变大。修改on_tract的函数,获取userdata。亮度是所有像素点的值都同步改变。

2025-07-02 11:20:45 205

原创 opencv入门(5)图像像素的读写操作和算术运算

如果是三通道彩色图,就使用Image.at进行读取单个像素,通过 Image.at [0], Image.at[1], Image.at[2]读取每个通道的数据。访问使用 image.at(row,col) 进行访问。如果是单通道灰度图,就使用image.at进行读取。C++中支持 数组遍历 和 指针方式遍历。使用image.ptr 进行遍历。这边就是对三通道进行一个取反。

2025-07-01 14:50:09 429

原创 opencv入门(4)图像创建和赋值

如果只是赋值,不会创建新的Data Block,只有克隆(clone)和拷贝(copyTo)时,才会创建新的数据块。表示每个数据有3个通道数,依旧是8行,但每个数据变成了3个,所以一排有3*8 = 24 个数据。打印出来就像这样,依次为 00,01,11…只有每个通道的第一个像素点才是1,如果通道是3,则会出现下列打印。如果知道是几个通道的,则使用Scalar,给每个通道的值进行赋值。头部,作为图片的属性,单通道多通道,整形等都存储在头部,打印出来 cols 是 8,高度是8,通道数是3。

2025-07-01 14:13:05 290

原创 opencv入门(3)图像色彩与空间转换

它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。第一个参数是原图片的地址,第二个参数是目标Mat地址,第三个参数是操作符。HSV通道 H 0 - 180 ,S 图像颜色,V图像亮度 0-255。第一个参数是文件位置,第二个是保存对象。关于第三个参数,可以选择保存的选项。后续都会在这个类中进行处理。main函数里的测试。

2025-06-30 16:50:06 275

原创 opencv入门(2)图像读取和显示

src读进来的是是8位通道的,位图和深度是3 * 8 = 24,API里用枚举显示图片的深度。第一个参数是文件地址,第二个参数是显示模式,默认是IMREAD_COLOR模式。这个值调用出来是1,是正常的,枚举中24的值等于1。和imshow配合,让imshow图片显示在inputwindow中。WINDOW_FREERATIO并且图片能自动适应窗口大小。如果有透明通道,使用IMREAD_UNCHANGED。waitKey(0);waitKey(1);显示图像 imshow。

2025-06-30 15:06:20 401

原创 opencv入门(1)环境变量配置

开发环境,提前下载opencv 4.8。

2025-06-30 14:17:39 320

原创 Flythings学习(四)串口通信

APP层在ProtocolSender.cpp,当APP层需要发送数据到MCU的时候直接调用sendprotocol函数,并在sendProtocol函数中实现。ProtocolParser:完成数据的协议解析部分,然后将解析号的数据放入ProtocolData中,同时管理了应用监听串口数据变化的回到接口。mProtocolData是UI界面默认的数据,在onUI_init的时候进行初始化,通过串口更新。tcflush是丢掉写入引用的对象,但是尚未传输的数据,或者收到但是尚未读取的数据。

2024-10-15 08:48:27 1150 1

原创 Flythings学习(三)界面交互

首先打开程序,会到达启动界面,随后通过openactivity到达subActivity界面,在subActivity又打开第三个界面,呈现栈一样的关系。当调用goback函数时,会将顶层的界面弹出(关闭),会调用onUI_quit函数,如果界面打开后申请了资源,在这里进行释放。onUI_init 只有在界面不存在的情况下才会调用,如果只是隐藏界面,就不会使用这个函数。打开已经隐藏的界面会调用intent进行通信,并且调用onUI_show进行界面展示。当调用gohome时,会弹出主窗口之外的所有窗口,

2024-10-14 10:28:26 787

原创 Flythings学习(二)控件相关

本系列笔记根据flythings官方文档进行学习,连接如下,相关下载在文档中的环境安装部分。

2024-10-12 17:42:32 1039

原创 Flythings学习(一)基础

本系列笔记根据flythings官方文档进行学习,连接如下,相关下载在文档中的环境安装部分指针变量名由三部分构成。分别为固定的小写 m 作为前缀 + ID名 + Ptr 作为结尾其他的相应ID的宏定义分别为固定的大写 ID 、大写的UI文件名、控件ID属性名称构成。

2024-10-12 11:09:52 1597

原创 Linux高并发服务器开发(十三)Web服务器开发

创建socket,得到监听文件描述符lfd——socket设置端口复用——setsockopt()绑定——bind()设置监听——listen()创建epoll树,得到树根描述符epfd——epoll_create()将监听文件描述符lfd上树——epoll_ctr(epfd,epoll_CTL_ADD…)\while(1)// 等待事件发生continue;break;// 下面是有事件发生,循环处理没一个文件描述符for(i = 0;i<nready;

2024-07-05 21:06:45 755

原创 Linux高并发服务器开发(十二)libevent

相当于epoll中红黑树的节点event_base 就是调用不同的多路IO接口判断事件是否已被激活,核心调用的是epoll,同时支持select和poll获得当前使用的IO多路复用的方法。

2024-07-05 15:36:44 847

原创 Linux高并发服务器开发(十一)UDP通信和本地socket通信

创建成功后,会在内核中创建缓冲区。

2024-07-03 17:44:08 368

原创 Linux高并发服务器开发(十)反应堆模型和线程池模型

先加锁 然后判断任务池中任务是否已满 若已满,则调用pthread_cond_wait阻塞等待,若未满,则往任务池中添加任务,添加完任务之后调用Pthread_cond_signal同志子线程去取任务。先加锁,然后判断任务池中是否有任务,若任务池中没有任务,则调用pthread_cond_wait函数等待主线程添加任务。若任务池中有任务,则取任务并处理任务。弱任务池已满,主线程应该阻塞等待子线程处理人物,此时主线程需要阻塞等待。弱任务池空了,子线程应该阻塞等待,等待主线程池往任务池中添加任务。

2024-07-03 16:13:31 4260

原创 Linux高并发服务器开发(九)Tcp状态转移和IO多路复用

优缺点优点:跨平台缺点:文件描述符1024的限制 由于FD_SETSIZE的限制只是返回变化的文件描述符的个数,具体哪个变化需要遍历每次都需要将需要监听的文件描述集合由应用层拷贝到内核。

2024-07-02 22:07:39 1094

原创 Linux高并发服务器开发(八)Socket和TCP

服务器向客户端发送 第一次发送512字节,当客户端还没读取完全时,又发送了1024个字节,则会发生粘包。mss 最大报文长度,一般出现在三次握手的前两次,用来告知对方发送数据的最大长度。提取链接得到一个已连接的套接字,接下来用这个已连接的套接字和客户端通信。每一次读取数据后,回ack报文,报文中会携带当前缓冲区大小。tcp是打电话的模型,建立连接 使用连接 关闭连接。关闭,半关闭(只关闭应用层的收发,但底层还能收发)从已完成链接队列提取链接。bind 绑定端口号,红区有多大,还剩多少,

2024-07-01 21:18:42 652

原创 Linux高并发服务器开发(七)网络基础

(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。

2024-06-29 13:45:49 560

原创 Linux高并发服务器开发(六)线程

进程是CPU 分配资源的最小单位, 线程是系统调度的最小单位。如果复制对方的地址空间,就产生出一个进程如果共享对方的地址空间,就产生一个线程。

2024-06-28 19:19:08 551

原创 Linux高并发服务器开发(五)终端和守护进程

比如说服务器,如果关掉终端后,服务器也会被关闭,这是不可以接受的。独立于控制终端,周期性的执行某种任务或等待某些触发条件。进程的集合叫进程组 也称为作业。

2024-06-27 18:46:04 247

原创 Linux高并发服务器开发(四)进程间通信

进程是独立的资源分配单元,不同进程之间的资源是独立的,不能直接在一个进程中直接访问另一个进程的资源。主要通信机制。

2024-06-27 16:49:30 825

原创 Linux高并发服务器开发(三)进程

程序是静态的,进程是动态的。读时共享,父子进程如果没有改数据,则父子进程都会共享一个空间,没有必要拷贝在自己的空间里。进程运行时,内核为每一个进程分配一个PCB,用于维护进程的相关信息,Linux内核的进程控制块是task_struct。公司相当于操作系统,部门相当于进程,公司通过部门来管理(操作系统通过进程管理)各个部门中的员工。调用进程没有子进程,就立即返回,若子进程结束,函数会立即返回,并且回收所有资源。写时拷贝,如过父子进程需要更改数据,则会拷贝到自己的空间,然后进行更改。

2024-06-25 19:34:53 789

原创 Linux高并发服务器开发(二)系统调用函数

根据系统调用,获取驱动信息、CPU的信息等。dup就是相当于配了一把新钥匙,但锁还是只有一个,即共享一个文件表。复制后,比如fd1 和fd3,都指向同一个文件表,找到同一个文件。用户态:不能随意访问内存、不能开闭中断以及切换运行的特权级别。Close 函数 :关闭一打开的文件,释放资源,刷新缓存区。进程表项 v节点指针指向v节点表,然后找到在磁盘中的位置。设置缓冲区,减少io系统调用的次数,提高访问效率。如果出错,会替换这个值,并报错。打开文件后,返回一个文件描述符。Open函数, 返回文件描述符。

2024-06-25 15:29:41 409

原创 Linux高并发服务器开发(一)GCC和Make

动态链接:链接器在链接时仅仅建立所需库函数的之间的链接关系,在程序运行的时候才将所需资源调入。缺点:生成程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间。静态连接:由链接器在链接时将库的内容加入到可执行程序中。优点:对运行环境依赖性较小,具有较好的兼容性。简化程序的升级,有较小的程序体积。库函数需要更新,必须重新编译。优点:在需要的时候才会调入。依赖动态库,不能独立运行。第一步预处理,生成.i。第二部生成汇编文件.s。第三部生成目标代码.o。动态库依赖版本问题严重。第四部生成可执行文件。

2024-06-24 17:08:39 271

原创 C++11多线程编程

C++11 多线程编程-小白零基础到手撕线程池因为临时变量在主线程结束后临时变量会被直接释放,所以出错std::ref 传递引用类型 使用右值引用。

2024-04-17 23:54:48 816

原创 Unity3D学习之XLua实践——背包系统

包括背包系统、VSCode环境搭建。

2024-03-07 22:53:21 1300 1

原创 Unity3D学习之Lua热更新解决方案(一)AB包和LUA语法

-面向对象实现--万物之父 所有对象的基类 Object--封装--实例化方法--给空对象设置元表 以及 __indexreturn objend--继承--根据名字生成一张表 就是一个类--设置自己的“父类”--给子类设置元表 以及 __indexend--申明一个新的类--成员变量--成员方法end--实例化对象使用obj:Move()--申明一个新的类 Player 继承 GameObject--多态 重写了 GameObject的Move方法。

2024-02-22 14:35:40 2936

原创 Unity学习之坦克游戏制作(3)结束场景的制作

由于排行榜功能,先在GameScene界面提供玩家一个输入玩家名以便保存到排行榜的界面。(如果有割裂感建议从1开始看)加入一个输入的预设体,再删除一个Button。在BeginScene中一进来就把光标锁定。直接从QuitPanel中提取部分拿来用。在BeginPanel中加一句。点击Build 选择文件夹即可。在玩家死亡时处理窗口弹出。

2024-01-26 09:33:46 844

原创 Unity学习之坦克游戏制作(2)游戏场景的制作

直接从BeginScene中把root中的Setting面板复制,然后在GameScene的root中复制。但这时候还是会报错,在点击关闭的时候,之前的逻辑是显示主菜单的界面,但这里没有主菜单,所以报错。拖入一个固定不动的敌人,让其头部自动旋转,在UI设计时我们已经写过头部旋转相关。因为受伤函数需要知道 谁打得我,所以在武器脚本中关联下谁发射的子弹。改变一下武器的预设体,由于不想动原有预设体,所以创建新的预设体。在打开游戏设置 和 退出游戏面板的时候,暂停时间的增加。

2024-01-25 23:47:03 2066 1

原创 Unity学习之坦克游戏制作(1)开始场景的制作

如果不初始化的时候设置,不管之前的设置会怎么样,游戏一开始就会播放音乐,只有打开设置面板后才会根据设置改变音乐,所以在初始化脚本的Awake函数中增加一句。如果第一次进入游戏没有音效数据,所以所有的数据要不是false 要不是0 ,所以在音效数据类中增加一个是否是第一次加载数据的标识。这个基类的最大作用,就是可以直接传类名给单利模式,而不需要在unity通过名字寻找到脚本的API进行面板的操作。这部分感兴趣的可以去看我博客的GUI部分,但建议大家把学GUI的时间拿来学UGUI。

2024-01-21 19:28:03 1728 1

原创 Unity3D学习之UI系统——GUI

设置Screen Type和Center Type自定义的style也会受影响。

2024-01-17 15:15:12 2526

原创 Unity3D学习之数据持久化——PlayerPrefs

获得了对应的key根据字段类型 来判断 根据哪个API判断修改游戏逻辑读取存档执行在执行save方法的时候,进行存盘。

2024-01-15 16:12:27 1636

原创 Unity学习之坦克游戏制作(0)必备知识点

使用版本Unity 2022.3.8f1c1。

2024-01-09 21:15:28 527

原创 C#中的值和引用笔记

在代码中直接转到内部F12如string类型值类型int。

2024-01-05 14:59:24 508

原创 数据结构学习笔记(九)排序

这部分没有基于书上学习,基于知乎上一篇文章必学十大经典排序算法,看这篇就够了基础进行学习.关于GIF都是网上搜索的,如果侵权私我我直接删除.图中所有算法都默认以从小到大的顺序排序。

2023-12-26 16:04:56 1257

原创 数据结构学习笔记(八)图

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。

2023-12-25 10:47:15 944

原创 数据结构学习笔记(七)搜索结构

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。int data;// 二叉树节点类// 左右子女public:~BST() {};= NULL)?// 赋值private:// 停止标志// 搜索// 置空// 打印// 复制// 求最小// 求最大// 递归插入// 删除。

2023-12-19 15:22:27 1021

原创 数据结构学习笔记(六)集合

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。

2023-12-12 16:25:18 183

原创 数据结构学习笔记(五)树

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。二叉树的特点是每个结点最多有两个子女,二叉树不存在度大于2的结点,并且二叉树的子结点有左右之分,其子树的次序不能颠倒。

2023-11-23 16:27:09 244

空空如也

空空如也

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

TA关注的人

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