- 博客(37)
- 收藏
- 关注
原创 UML类图
抽象类是 “带代码复用的抽象基类”(is-a),接口是 “无代码的行为规范”(can-do);类之间的关系主要包括泛化(继承)、依赖、关联、聚合、组合和实现6种关系。类主要由三部分组成,分别是类名、类的属性、类的方法。的特点是:部分是整体的不可分割的组成部分,二者生命周期完全绑定。的特点是:部分可以属于多个整体,整体销毁后部分仍可存在。类图概括起来主要由两部分组成:类和类之间的关系。组合和聚合为关联的特例,核心为是有。,一个类持有另一个类的对象引用。是固定的结构性联系,通常表现为。
2025-12-29 16:58:34
231
原创 GDB使用
而使用cmake时,在CMakePresets中配置"CMAKE_BUILD_TYPE": "Debug"gdb使用于编译结束,所以在编译时要声明是否添加调试信息,使用g++直接编译时加-g,,从而让原本混乱的线程交互逻辑变清晰,方便定位问题。多线程调试的核心,就是。
2025-11-09 22:49:11
108
原创 内存的一些概念
根据需要临时分配的内存,用完后需释放(否则会内存泄漏)。,两者权限隔离,互不干扰。new返回的内存地址实际上是虚拟内存内的地址。,它将 “物理内存 + 部分磁盘空间” 组合起来,为每个程序提供一个。虚拟内存是操作系统构建的。虚拟内存会被严格拆分为两大区域 ——“连续、独立” 的内存地址。,两者管理方式完全不同。
2025-10-17 10:19:06
301
原创 I/O多路复用
让一个单独的线程/进程能够监视多个文件描述符(如网络套接字),一旦某个描述符就绪(读就绪或写就绪),就能够通知程序进行相应的读写操作。它只返回就绪的文件描述符及其事件,应用程序无需遍历所有监视的描述符。通过红黑树和就绪链表解决上述问题,其为linux特有api。在连接数比较多时,拷贝和遍历消耗时间较多。均为操作系统提供的系统调用(API)实例,返回一个文件描述符。要监视的文件描述符和事件。,而不是每次循环都做。
2025-09-19 09:58:39
232
原创 vscode实现第三方包的使用,cmake结合vcpkg(跨平台)
由于cmake具有跨平台性,所以一般项目采用cmake+vcpkg是很好的方案!要使用cmake和vcpkg组织一个完整的现代cpp项目,一般来说需要三个文件。描述预设,即项目构建的宏观信息,配合。描述的具体信息可以进行整个项目的构建。在整个项目构建时,如果直接使用。会报错找不到第三方包,原因是。,需要额外配置.vscode。初始化项目的构建环境。
2025-09-16 17:35:19
439
原创 vcpkg在vs下用法
包含目录新增 自己的目录\vcpkg\installed\x64-windows\include\opencv。库目录新增 自己的目录vcpkg\installed\x64-windows\lib。所以我们还是选择在cmd中下载包,并在编译器中设置包含目录和库目录实现第三方库的引用。首先在windows cmd中执行下面的代码,安装vcpkg。完成上述操作后就可以在第三方库中使用opencv了。vs下不使用cmake,单纯依靠vs和vcpkg。
2025-08-04 19:21:14
248
原创 cpp多线程\进程学习
是 C++11 引入的跨平台线程管理类,封装了操作系统的线程 API(如 pthread、Windows 线程),提供统一的线程操作接口。是线程间通信的工具,允许一个或多个线程等待某个条件满足(由其他线程通知唤醒),避免无效的轮询等待。,确保对其的操作是原子的(不可分割),避免多线程访问时的数据竞争。适用于int等简单基本类型。detach():分离线程(后台运行),无需等待。join():阻塞当前线程,等待目标线程执行完毕。std::lock_guard:构造时加锁,析构时解锁(不可手动解锁)。
2025-06-04 11:17:33
303
原创 C++sort函数、哈希容器和优先队列
哈希函数说完了,接下来是桶,哈希地址就是桶的地址,用来存储键或者键值对,通常一个桶内只存一个元素,效率比较高,但是难免会产生哈希冲突,桶还起到处理哈希冲突的作用,常见的是链地址法,即桶采用链表结构。都提供了默认的哈希函数和相等比较函数,这是可以更改的,通常是通过一个类来实现,实测了lambda表达式和仿函数,均可使用,lambda表达式需要借用decltype。首先明确一件事,哈希是指将键值通过哈希函数运算得到哈希地址,映射通常指键值对pair。2.参数的类型为要排序的元素的类型。无序映射和无序集合相似。
2025-01-15 09:36:06
315
原创 TCP/IP协议浅析
由于UDP不建立连接,因此减少了开销和延迟,但同时也意味着它不保证数据的可靠传输。网络层:主要工作是定义网络地址、区分网段(IP协议)、子网内MAC寻址(ARP协议/地址解析协议)、对于不同子网的数据包进行路由(路由协议)。对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了。、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。TCP/IP传输协议是一个四层的体系结构,包括应用层、传输层、网络层和数据链路层。
2024-11-18 09:19:07
776
原创 公网/私网地址
这是一个用于动态分配IP地址的协议,是一个应用在局域网中的网络协议,采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请,DHCP Server为网络上的每个设备动态分配IP地址、子网掩码、默认。是局域网与局域网之间通信的门,想要与外部通信,必须要这个门,一般情况下为路由器ip地址,因为作者使用单位网络,所以这个网关实际上是三层交换机的ip。私网地址为公网分配给局域网中的设备的地址,这个地址是可变的,这个地址就是可复用私网地址。
2024-11-11 17:06:35
837
原创 pycharm qt开发
ui设计可通过可视化desinger完成,功能实现就正常写法即可,常见的ui连接功能的方法有使用button的clicked和toggled等连接函数。最后 ,通过下面这行代码启动应用程序的主事件循环,它负责监听和处理所有的事件,比如鼠标点击、键盘输入、窗口重新绘制请求等。提供了整个图形界面程序的底层管理功能,我们必须在任何界面控件对象创建前,先创建它。pyqt5中也有相关控件,但亲测不通用,因为装了pyqt5的rcc被卡了好久。
2024-10-17 11:19:04
330
原创 C++函数作为参数
通过创建一个类并重载()来创建函数对象,主要用于STL容器和算法。相对于直接函数调用,函数对象有两个优势。第一个是函数对象可包含状态。第二个是函数对象是一个类型,因此可用作模板参数。函数可以在某些情况下替换STL模板容器或算法中的函数对象作为参数。的最后一个参数是返回布尔值(一个。第二个模板函数是模板函数对象。使用时以函数名作为实参。
2024-09-13 21:03:43
557
原创 python正则表达式
正则表达式(Regular Expressions)是一个强大的字符串处理工具,它们使用一种特殊的语法来描述字符模式,这些模式随后可以用于匹配、搜索、替换或分割字符串。使用re匹配字符串,包括re.match、re.search和re.findall。
2024-09-02 13:41:24
210
原创 C++的匿名函数及引用
C++ 支持把引用作为参数传给函数,这比传一般的参数更安全。当作为值传递时,我们相当于拷贝了一份参数,但使用引用传递,相当于拿源数据进行操作。比如上述代码中的值引用会将x的值变为20。capture:它定义了Lambda表达式体内部可以访问哪些外部作用域中的变量,以及这些变量是如何被捕获的。一般来说,使用下述方式创建引用,上述方式&x有点像取地址,所以给出了捕获指针的对比代码供参考。匿名函数可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。引用也可以作为返回值,和正常返回值使用方法相同。
2024-08-27 19:23:14
458
原创 OpenGL裁剪空间浅析
对于视口变换,就是把裁剪空间的结果映射到屏幕空间,此时有一个关键的问题,根据上文可知,裁剪结果宽高比和作为参数的宽高比互为倒数,当我把一个正方形空间的裁剪结果映射到具有某个宽高比(这个宽高比将作为参数2)的屏幕上时,裁剪结果刚好恢复为一开始设置坐标值的时候的比例,避免产生形变。首先对于参数1的角度,角度越大,平截头体的面积越大,能看到的范围就越大,裁剪空间会根据透视除法映射到[-1,1],可视为一个正方形空间,虽然对于每个向量可能有不同的w分量,但x、y和z分量的比值不变。理解的很含糊,未来会改(也许)
2024-08-23 09:53:42
982
原创 python 多线程(包括QT多线程)
Qt Signal(主界面改动建议在主线程执行,所以可以开辟一个线程发送信号,在主界面中接受信号并执行主界面改动)Qt中多线程可以实现对主界面展示的实时更新,在非主线程中进行绘制操作,理论上可以逐帧展示在主界面,但不建议。Lock(防止两个线程同时访问同个数据,两个线程都需要加锁)Thread(新建线程)
2024-08-15 16:34:21
318
原创 python logging
根记录器的名称在输出中打印为 'root'。指定记录器将处理的最低严重性日志消息。从记录器对象中添加和删除处理器对象。可以添加或移除记录器对象中的过滤器。不要直接实例化记录器,可以通过执行。,意味着只会追踪该级别及以上的事件。自定义时间格式方法:去掉了毫秒部分。常见formatter占位符如下。创建一个日志记录器。
2024-08-14 11:23:22
358
1
原创 python常用数据结构(包括深拷贝内容)(numpy)
list中list_[n](多维,list_[n]是list类型)可视为某一块内存的别名,但numpy_[n](多维,numpy_[n]是numpy.ndarray类型)是内存本身,对其的修改将会直接展示在内存上。numpy类型尽量使用封装方法吧,不然会产生很多问题,刚测试发现numpy_[1]和numpy_[0]地址相同,太奇怪了,不要拿numpy类比list!一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。拷贝父对象,不会拷贝对象的内部的子对象。
2024-07-15 16:47:08
310
原创 python,QOpenGLWidget类的使用入门
3.索引缓冲对象(IBO):VBO中的顶点有可能重合,为节约内存,可以通过索引获得VBO中顶点进行绘图,其将索引存储在IBO中,实现与VBO基本一致。1.着色器设计:着色器是使用一种叫GLSL的类C语言写成的,opengl要求使用者必须手动实现顶点着色器和片段着色器,设计后需要进行编译。2.顶点缓冲对象(VBO):顶点缓冲对象用来存储输入顶点,实现流程包括,创建、绑定、将输入数据转移至顶点缓冲对象。4.顶点数组对象(VAO):用来将VBO,IBO合并,便于使用,还包括了对VBO内数据的解析(链接顶点属性)
2024-06-18 17:47:45
465
1
原创 灰度变换和插值
stretchlim生成一个低限和高限,可以用到imadjust中。1.插值方式(虽然不知道这和彩色变换有什么关系,不过插值方法很有用)2.使用直方图均衡增强对比度。3.调整图像强度值或颜色图。
2024-05-21 14:00:23
612
1
原创 图像复原(维纳滤波)
上述计算函数所需参数时使用了noise和f,若已知这些,计算的意义何在?使用函数deconvwnr可实现维纳滤波。采用下述代码生成退化图像g。
2024-05-09 14:53:59
429
原创 正态(高斯)分布
如果 x 是一个数组,那么返回的结果也将是一个与 x 相同大小的数组,每个元素对应于对应位置上的概率密度函数值。标准差越小,数据或随机变量的取值越集中在均值附近,分布形状越尖锐;概率密度值区别于概率,概率密度函数给出的是在某个取值处的概率密度,而不是具体的概率值。1.均值:指正态分布的取值均值,在图像中,x轴上的每个点代表一个可能的取值。这些取值围绕着高斯分布的均值展开,距离均值越远,取值的概率密度越小。对于正态分布的图像,X轴表示取值范围,Y轴表示此取值的概率密度值,正态分布图像积分值均为1.
2024-04-23 15:12:01
1093
原创 高频强调滤波和直方图均衡化
由较窄灰度级范围内的灰度表征的图像是直方图均衡化的理想选择。此滤波器滤波后得到的是具有0均值的非零图像,所以在滤波时。高频强调滤波和直方图均衡化相结合,是一种较为常用的方法。dftfilt和gscale均为自定义M函数。其实还有好多不清晰的地方,希望未来可以弄懂。其中a是偏移量,b是乘数,HP为高通滤波器。此方法既突出了高频部分,又增强了低频部分。高频强调滤波可用公式。
2024-04-19 16:48:14
426
1
原创 频域滤波器
空间域滤波器:使用公式生成频率域滤波器:两种方法生成仅考虑二维图像矩阵,两种滤波器都是正常的矩阵,唯一不同的是频率域滤波器要求大小需要paddedsize扩充,而空间域没有这个要求个人理解:频率域中的滤波器可以以图像形式拿出来看看,而空间域的滤波器作为一个矩阵来看更加清晰。
2024-04-18 15:23:44
388
1
原创 cv2.warpPolar简单用法及Qlabel.setAlignment用法
Qt.AlignLeft(水平方向靠左对齐) 、Qt.AlignRight(水平方向靠右对齐)、Qt.AlignCenter(水平方向居中对齐)、Qt.AlignJustify(水平方向调整间距两端对齐)、Qt.AlignTop(垂直方向靠上对齐)、Qt.AlignBottom(垂直方向靠下对齐)、Qt.AlignVCenter(垂直方向居中对齐)cv2.WARP_INVERSE_MAP:代表此时是由矩形变成圆。(x / 2, x/ 2)是圆心。(x,x)是处理后的图像大小。0.7*x是圆的半径。
2024-04-17 13:52:26
434
1
原创 DFT滤波的基本步骤
上述DFT滤波可使用一个M函数实现,本函数中的h为滤波器函数,满足以下条件1.h为频域函数2.假定滤波器函数大小已被适当调节returnelseend。
2024-04-03 16:22:35
1692
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅