自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

木梓油

工作学习记录

  • 博客(94)
  • 收藏
  • 关注

原创 带你入门,在Windows玩转Docker Desktop

Docker是一个开源平台,用于开发、部署和运行应用程序的容器化技术。它通过容器实现应用程序与基础设施的分离,提供轻量级、隔离的运行环境,相比虚拟机更高效。Docker采用客户端-服务器架构,支持镜像、容器和仓库等核心概念。在Windows系统上运行Docker需要满足硬件虚拟化等条件,并依赖WSL2提供Linux环境支持。Docker Desktop提供了图形化界面管理容器、镜像、卷和构建等功能,简化了容器生命周期管理。该技术广泛应用于CI/CD工作流,显著提升了软件交付效率。

2026-03-25 14:34:30 403

原创 PostgreSQL-02-数据类型(数字类型)

PostgreSQL提供了多种数字类型,包括不同大小的整数(smallint、integer、bigint)、浮点数(real、double precision)以及高精度数字类型(numeric/decimal)。整数类型支持不同范围的数值存储,integer是常用选择。numeric类型支持用户自定义精度和标度,适用于精确计算如金融场景,但性能较低。PostgreSQL 15+支持负数标度,允许对整数部分进行舍入。numeric还支持特殊值(Infinity、-Infinity、NaN),其中NaN在排

2026-03-13 16:54:00 366

原创 PostgreSQL-01-前言

PostgreSQL是一款开源的对象关系型数据库管理系统,起源于加州大学伯克利分校的POSTGRES项目。它支持SQL标准的大部分功能,并提供多种现代化特性如事务完整性、多版本并发控制等。PostgreSQL的发展经历了三个阶段:伯克利POSTGRES项目(1986-1994)、Postgres95(1994-1996)和PostgreSQL(1996至今)。Postgres95首次引入SQL支持并大幅优化性能,1996年更名为PostgreSQL以体现其与原始POSTGRES的继承关系。作为开源软件,Po

2026-03-11 17:10:21 378

原创 线性代数-3Blue1Brown《线性代数的本质》抽象向量空间(13)

本文探讨了线性代数中抽象向量空间的概念。通过回顾向量的本质,指出向量可以是任何满足特定运算规则的对象。抽象向量空间由集合、数域和两类运算(加法和标量乘法)构成,并要求满足8条基本公理。这些公理包括交换律、结合律、零向量和负向量存在性等。抽象化的核心意义在于统一处理不同领域的问题——无论是物理中的力、计算机数据、信号波形还是多项式,只要符合向量运算规则,都可视为向量空间中的元素。最终强调向量的本质不在于具体形式,而在于其运算特性。

2026-02-06 12:18:27 563

原创 线性代数-3Blue1Brown《线性代数的本质》特征向量与特征值(12)

本文总结了3B1B《线性代数的本质》中特征向量与特征值的核心概念。特征向量是在线性变换中保持方向不变的非零向量,仅发生伸缩(λ>0)或反向(λ<0)。特征值λ表示伸缩倍数,其绝对值决定伸缩幅度。通过矩阵A=[[3,0],[0,2]]和旋转矩阵的实例,展示了特征向量的几何意义。文章推导了特征方程Av=λv的数学过程,解释了为何需要引入单位矩阵I,最终得到det(A-λI)=0的特征方程解法。用地球仪旋转等比喻形象说明了特征方向的概念。

2026-02-05 13:31:46 1254

原创 线性代数-3Blue1Brown《线性代数的本质》基变换(11)

本文介绍了线性代数中的基变换概念。基向量是描述向量空间的标尺,除了标准基外,任何线性无关且能张成整个空间的向量组都能作为基。基变换的核心是解决不同坐标系之间的坐标转换问题,关键在于构造变换矩阵P。文章通过二维空间的例子详细演示了如何将向量从标准基转换到新基:首先构造以新基向量为列的变换矩阵P,然后通过求逆矩阵P⁻¹来计算向量在新基下的坐标。最后通过验证证明了计算结果的正确性。这一过程展示了线性代数中基变换的基本原理和计算方法。

2026-02-04 17:03:39 919

原创 神经网络之S神经元(Sigmoid neurons)

Sigmoid 神经元是早期神经网络的核心激活神经元,凭借连续可微、输出值映射到 (0,1) 区间的特性,解决了感知机不可微、无法做梯度下降训练的问题,成为 BP(反向传播)算法的基础,但随着深度学习的发展,其暴露的多重核心局限性,使其逐渐被 ReLU 等激活函数对应的神经元替代,尤其在深层神经网络中几乎不再作为核心激活单元。假设在 手写数字识别 网络,若网络将一张本应是数字 “9” 的图像误识别为 “8”,找到对应的方式微调权重和偏置,让网络对这张图像的识别结果更接近正确的 “9”。

2026-01-29 14:51:06 823

原创 神经网络之感知机(Perceptron)

1957年,弗兰克·罗森布拉特(Frank Rosenblatt)提出了感知机模型,他的工作证明了通过简单单元的互联和简单的学习规则,可以涌现出强大的智能行为,这一核心思想至今未变。弗兰克·罗森布拉特(1928-1971)是一位美国心理学家和计算机科学家,他在康奈尔航空实验室工作。他深受早期神经科学研究(如沃伦·麦卡洛克和沃尔特·皮茨的神经元模型)和赫布学习理论的影响。他的目标不仅仅是构建一个模式识别机器,更是想通过机器模型来理解大脑的学习机制。

2026-01-27 14:38:40 760

原创 3Blue1Brown-深度学习之反向传播算法

只有前向传播,模型可以预测,但无法学习。反向传播提供了“学习的方向”,是训练的关键。训练阶段必须结合前向传播和反向传播。

2026-01-26 15:36:36 631

原创 机器学习(Machine Learning)系列

本文介绍了神经网络的基础概念和深度学习的学习资源。首先讲解了感知机(Perceptron)这一神经网络的基本单元,然后整理了3Blue1Brown深度学习系列视频的笔记,包括人工神经网络、梯度下降法和反向传播算法三个核心主题。最后推荐了两大优质学习资源:Michael Nielsen的开源书籍《神经网络与深度学习》,该书系统讲解深度学习核心概念;以及3Blue1Brown制作的深度学习视频,以直观可视化方式呈现复杂概念。这些资源为深度学习初学者提供了循序渐进的学习路径。

2026-01-25 16:58:06 95

原创 3Blue1Brown-深度学习之梯度下降法

本文基于3Blue1Brown深度学习视频,解析了神经网络的学习机制。核心观点包括:1) 神经网络学习本质是寻找最优权重和偏置参数;2) 损失函数作为"裁判"评估预测误差;3) 梯度下降法通过寻找最陡下降方向逐步优化参数。文章用"山谷寻路"的比喻形象说明梯度下降原理,强调学习率对训练效果的关键影响。整个过程展示了神经网络如何通过迭代调整实现"学习"能力。

2026-01-24 23:31:55 978

原创 3Blue1Brown-深度学习之人工神经网络

本文是观看3Blue1Brown深度学习视频后的学习笔记,主要介绍了人工神经网络的基本原理。神经网络模拟生物神经元结构,通过输入层、隐藏层和输出层进行模式识别。核心要素包括权重(连接强度)、偏置(激活门槛)和激活函数(引入非线性)。工作流程分为输入、加权求和、加偏置、激活函数处理和输出五个步骤。文章以手写数字识别为例,说明神经网络如何通过分层特征提取实现复杂任务。

2026-01-23 13:35:33 986

原创 线性代数-3Blue1Brown《线性代数的本质》叉积(10)

本文探讨了3B1B《线性代数的本质》中叉积的新视角。传统定义中,三维空间两向量的叉积结果是一个垂直于原向量平面的新向量,其模长等于平行四边形面积。3B1B则揭示叉积本质上是描述任意第三向量相对于原向量平面"朝向程度"的线性函数,该函数可表示为点积形式,而叉积就是这个特殊向量。这种解释将叉积与平行六面体有向体积联系起来,提供了更深刻的几何理解。

2026-01-21 16:04:48 674

原创 线性代数-3Blue1Brown《线性代数的本质》点积与对偶性(9)

本文探讨了点积的几何意义及其与线性变换的对偶性关系。传统点积定义体现为向量分量乘积之和,而其几何解释则是向量投影长度与另一向量长度的乘积。3B1B的核心观点指出,每个点积操作都对应一个从高维到一维的线性变换,这种变换可用1×n矩阵表示。更深层的"对偶性"揭示了向量与线性函数之间的一一对应关系:每个线性泛函都唯一对应一个向量,使得函数作用等同于与该向量的点积运算。这种对偶性为理解线性代数提供了向量语言和函数语言的双重视角。

2026-01-21 14:21:38 600

原创 PySide应用-P01-集成OpenCV读取图片

本文介绍了一个基于PySide6和OpenCV的图片查看器应用。主要内容包括:使用OpenCV读取图片,支持图片旋转、缩放等操作;通过Qt实现图形界面,包含菜单栏、工具栏等功能组件;演示了OpenCV图像与Qt图像格式的转换方法。示例代码展示了主窗口实现、图像处理(旋转、缩放)和界面交互等功能。该应用可作为PySide6与OpenCV结合的入门示例,适合想要学习GUI开发与图像处理的开发者参考。

2026-01-20 09:32:27 327

原创 PySide系列-07-QMainWindow

本文介绍了使用PySide6中的QMainWindow类创建主窗口应用的基本方法。QMainWindow提供了菜单栏、工具栏、中心部件、状态栏和停靠窗口等标准布局区域。通过示例代码演示了如何构建一个记事本应用的界面框架,包括创建文本编辑区域、添加菜单栏(文件、编辑、格式等菜单)、设置工具栏和状态栏,以及添加右侧停靠窗口。该教程适合初学者学习PySide6的基础窗口布局。

2026-01-19 15:52:04 98

原创 PySide系列-06-QCheckBox、QRadioButton

QCheckBox 通常用于表示 多选 状态(即可以同时选择多个选项)。QRadioButton 用于从一组选项中 选择唯一一项。同一组内的多个 QRadioButton 是互斥的(只能选一个)部件没啥其他需要说明的了,看代码吧。

2026-01-19 14:28:48 65

原创 PySide系列-05-QComboBox

摘要:QComboBox是PySide中的下拉列表控件,支持单选操作并提供文本显示功能。核心信号包括currentIndexChanged和currentTextChanged,用于响应选项变化。常用属性涵盖count、currentData等基础配置,方法则包含addItem/removeItem等列表操作。特别区分了currentText(可见文本)和currentData(隐藏数据)的不同用途,前者面向用户显示,后者用于程序内部逻辑处理。该控件支持编辑、去重等功能,默认最多显示10个可见项。

2026-01-19 10:00:26 356

原创 PySide系列-04-QLineEdit

本文介绍了PySide6中的QLineEdit单行文本输入框控件。主要内容包括:1)QLineEdit的基本功能和使用场景;2)常用信号如textChanged、editingFinished等;3)核心功能实现,包括设置回显模式(密码输入)、获取/设置文本、占位符提示、输入验证器等;4)主要属性说明;5)提供了一个完整的用户登录界面示例代码,展示了用户名和密码输入框的实际应用,包含输入验证、样式设置等功能。该控件是构建GUI应用程序的基础输入组件,适用于各种表单场景。

2026-01-14 15:45:57 583

原创 PySide step by step系列

本文整理了PySide基础教程系列文章,包括入门简介、信号与槽机制、QPushButton和QMessageBox控件使用以及QLineEdit控件的详细介绍。该系列循序渐进地讲解PySide框架的核心概念和常用控件,适合Python GUI开发初学者系统学习。文章配有代码示例和CSDN链接,便于实践参考。

2026-01-13 17:21:22 50

原创 PySide系列-03-QPushButton、QMessageBox

本文介绍了PySide6中两个常用GUI控件的使用方法。第一部分讲解了QPushButton的基本功能,包括其信号机制(clicked、pressed、released、toggled)以及如何设置按钮文本、快捷键和图标。第二部分介绍了QMessageBox消息框的几种类型(信息、警告、错误、询问)和对应的静态方法,并提供了创建标准对话框和自定义对话框的代码示例。文章通过实际代码演示了如何实现按钮点击事件处理和各类消息框的弹出功能。

2026-01-12 17:22:34 539

原创 PySide系列-02-信号与槽机制

PySide6信号与槽机制是Qt框架实现对象间通信的核心技术,采用观察者模式实现松耦合。信号是对象状态变化时发出的通知,可携带参数;槽是接收信号的函数,支持普通函数和lambda表达式。代码示例展示了如何定义信号、连接槽函数以及发送信号。该机制还支持断开连接、一个信号连接多个槽以及跨线程安全通信(通过QueuedConnection)。这种灵活的设计是构建响应式GUI应用的关键。

2026-01-12 13:55:29 160

原创 PySide系列-01-入门简介

PySide6是Qt官方提供的Python绑定库,用于开发跨平台GUI应用程序。它支持Qt6框架,提供丰富的模块如QtCore、QtWidgets等,并包含设计工具如pyside6-designer。安装简单,可通过pip完成。示例展示了如何创建一个包含按钮的基本窗口应用,涉及QApplication、QMainWindow和QPushButton类。PySide6适合Python开发者快速构建桌面应用,官方文档和社区资源丰富。

2026-01-11 00:18:43 751

原创 OpenCV 学习11 读取和写入视频文件

在 OpenCV 中,VideoCapture 和 VideoWriter 是两个用于处理视频输入和输出的核心类,支持各种视频文件格式。

2026-01-06 16:19:05 365

原创 线性代数-3Blue1Brown《线性代数的本质》逆矩阵、列空间、秩与零空间(8)

本文是3B1B《线性代数的本质》系列视频中关于逆矩阵、列空间、秩与零空间的学习笔记。文章从线性方程组入手,将其表示为矩阵形式A⃗x=⃗b,并解释其几何意义:寻找输入向量⃗x使得变换后等于⃗b。重点讨论了逆矩阵的存在条件(行列式不为0)、列空间的定义(矩阵列向量张成的空间)、秩的概念(列空间的维度)以及零空间(被压缩到原点的向量集合)。通过表格总结了这些概念与可逆性的关系,并简要说明了非方阵的线性变换意义。全文以几何视角直观呈现线性代数的核心概念。

2025-12-19 19:20:25 1204

原创 OpenCV 学习10-边缘检测(Edge Detection)

返回值返回一个 二值图像(NumPy 数组)像素值255表示检测到的边缘点,0表示非边缘点参数说明参数类型说明imageNumPy 数组输入图像,灰度图(Grayscale)。如果是彩色图用 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 转换threshold1float低阈值,用于弱边缘检测threshold2float高阈值,用于强边缘检测,必须大于 threshold1。强梯度超过此值才被认为是“真实边缘”int (可选)

2025-12-19 15:06:41 1093

原创 OpenCV 学习9-灰度转黑白二值图像

图像二值化是将灰度或彩色图像简化为黑白两种状态的处理方法,在OCR识别、条形码读取、医学图像处理等场景中广泛应用。OpenCV提供的cv2.threshold()函数通过设定阈值实现二值化,支持多种阈值类型,包括二进制阈值化、反向二进制等。其中OTSU算法能自动计算最优阈值,通过最大化类间方差实现最佳分割效果。该方法通过保留关键结构、去除冗余信息,有效提升了图像处理效率。

2025-12-16 10:20:22 944

原创 OpenCV 学习8-使用卷积进行图像滤波

本文介绍了图像滤波的基本概念和应用。图像滤波是一种数字图像处理技术,通过卷积核运算实现去噪、边缘检测、增强等效果。文章首先分析了实际需求和应用场景(如医学影像、自动驾驶等),然后详细解释了噪声类型(高斯噪声、椒盐噪声等)及其处理方法。重点介绍了卷积核的工作原理,包括恒等核、模糊核(均值滤波、高斯滤波)等不同类型核的特点和使用方法。最后讲解了OpenCV中的filter2D函数,说明了其参数配置和卷积运算过程。这些技术可广泛应用于图像质量改善、特征提取等任务。

2025-12-15 16:21:19 852

原创 线性代数-3Blue1Brown《线性代数的本质》行列式(7)

本文探讨行列式的本质,指出传统教材缺乏直观解释。基于3Blue1Brown《线性代数的本质》,行列式被理解为线性变换的空间缩放因子:其绝对值表示面积/体积的缩放倍数,符号反映空间定向是否翻转。当行列式为零时,表示空间被压缩到低维度,导致信息丢失,这也解释了为何行列式为零的矩阵不可逆。文章还给出了2×2和3×3矩阵的行列式计算公式。通过几何视角,揭示了行列式的直观意义,弥补了传统计算方法的不足。

2025-12-12 14:28:14 1594

原创 OpenCV 学习7-图像标注

本文介绍了使用OpenCV在图像上绘制标注信息的常用方法,包括画线、圆、矩形、椭圆和文本。详细说明了各函数的参数定义和使用注意事项,如颜色使用BGR格式、线型选择(包括抗锯齿处理)以及填充方式(通过thickness参数控制)。通过具体代码示例演示了如何实现这些标注功能,并附有相关效果图。文中特别强调了一些关键点,如图像必须可修改、坐标点定义方式以及不同图形绘制的参数设置技巧。这些标注方法适用于图像处理中的标记、注释等应用场景。

2025-12-12 11:26:46 760

原创 OpenCV 学习6-图像平移

本文补充了图像旋转的原理,重点介绍了图像平移的实现方法。通过2×3变换矩阵M,其中tx控制水平移动方向(正右负左),ty控制垂直移动方向(正下负上)。文中提供了Python代码示例,使用OpenCV的warpAffine()函数实现图像平移,包含读取图像、定义变换矩阵、执行平移和显示结果四个步骤。代码演示了将图像向右平移100像素、向上平移100像素的具体实现过程。

2025-12-10 14:14:29 875

原创 计算机视觉-OpenCV-学习系列

该系列文章记录了博主学习OpenCV图像处理的过程,从基础概念到具体操作逐步深入。内容包括:计算机图像基础知识、OpenCV简介、图像读取/显示/保存、尺寸调整、裁剪、旋转与平移原理、图像标注、卷积滤波、灰度转二值化以及边缘检测等技术要点。文章按学习进度更新,系统性地介绍了OpenCV的常用图像处理功能。

2025-12-10 08:55:08 301

原创 OpenCV 学习5-你知道图像旋转的原理吗?

本文介绍了图像旋转的数学原理及OpenCV实现方法。首先阐述了二维坐标系中点的旋转变换公式,并指出直接应用会导致图像绕左上角旋转的问题。正确的做法是采用"平移-旋转-平移回"三步法实现以图像中心为轴的旋转。文章详细推导了仿射变换矩阵的计算过程,并提供了OpenCV中的关键函数说明:getRotationMatrix2D()用于生成变换矩阵,warpAffine()执行变换。最后给出Python代码示例,演示了45度旋转的实现方法,同时讨论了避免图像裁剪和修改背景色等常见问题解决方案。

2025-12-09 16:51:15 1736

原创 Numpy学习4-视图和复制

在使用 NumPy 进行数据处理时,理解 视图(view) 和 复制(copy)之间的区别至关重要,直接关系到代码的性能和正确性。在不确定时,一定要用代码实测。

2025-12-09 14:16:51 196

原创 数学基础-线性代数-学习系列

本文是博主学习3Blue1Brown《线性代数的本质》系列视频的笔记整理,系统介绍了线性代数的核心概念。内容涵盖向量本质、线性组合、矩阵变换、行列式、逆矩阵、秩与零空间等基础知识,并深入讲解点积、叉积、基变换、特征向量等进阶内容。通过13篇系列文章,由浅入深地展现了线性代数的几何直观与数学本质,适合希望从几何角度理解线性代数的学习者参考。

2025-12-08 15:57:13 276

原创 Numpy学习3-数组切片

本文系统总结了NumPy数组切片操作的核心要点和使用方法。主要内容包括:1)切片返回视图而非副本,修改会影响原数组;2)一维数组切片语法及常见操作(取前后n个元素、步长选择、反转等);3)二维数组行列切片技巧(提取子矩阵、条件筛选、花式索引等);4)三维数组分层切片方法(获取特定层、行列选择等)。文中通过表格形式清晰展示了各种切片场景的语法示例和输出结果,是处理多维数组数据的高效参考指南。掌握这些切片技巧能显著提升数组操作效率。

2025-12-07 20:28:21 476

原创 线性代数-3Blue1Brown《线性代数的本质》矩阵与线性变换-三维空间(6)

摘要:三维空间的线性变换完全由基向量$\hat{i}$、$\hat{j}$、$\hat{k}$的变换结果决定。将变换后的基向量坐标作为列向量排列,即可构造变换矩阵。任意向量$\begin{bmatrix}a\b\c\end{bmatrix}$经变换后的新坐标,可通过矩阵乘法计算为各基向量变换结果的线性组合。这种表示方法与二维情形类似,体现了线性变换的矩阵表示原理。

2025-12-05 17:52:04 524

原创 OpenCV 学习4 - 裁剪图像

摘要:本文介绍了使用OpenCV进行图像裁剪的方法,基于NumPy数组切片操作实现。主要内容包括:1)图像裁剪坐标说明和基本语法;2)代码示例演示如何显示和保存裁剪区域;3)九宫格绘制方法,通过计算图像分块坐标并绘制矩形框实现。所有示例均包含完整的Python代码实现,涵盖了图像读取、处理、显示和保存的全流程操作。

2025-12-05 16:18:31 352

原创 OpenCV 学习3 -调整图像大小

摘要:本文介绍了OpenCV中resize()函数的使用方法,包括参数说明和常见插值算法。重点讲解了两种调整图像大小的方式:1)直接指定目标尺寸(width,height);2)使用缩放因子(fx,fy)按比例调整。文中提供了代码示例,演示了如何缩小/放大图像,并比较了不同插值方法的效果。注意事项包括:减小尺寸需要重新采样,增大尺寸需插入新像素,以及保持原始宽高比的重要性。最后展示了使用INTER_AREA(适合缩小)和INTER_CUBIC(适合放大)的具体实现代码。

2025-12-05 12:40:04 499 1

原创 OpenCV 学习2 - 读取、显示和写入图像

本文介绍了OpenCV中三个基础图像处理函数:imread()用于读取图像并返回NumPy数组,支持不同解码方式;imshow()用于显示图像窗口;imwrite()用于保存图像数据到文件。文章提供了详细的函数语法说明、参数解释和代码示例,包括读取显示图像、创建随机图像并保存等操作。还介绍了waitKey()函数控制图像窗口显示时间的用法,并给出了OpenCV安装命令和国内镜像源。这些函数是图像处理和计算机视觉应用的基础操作。

2025-12-04 22:17:34 463

空空如也

空空如也

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

TA关注的人

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