当前位置: 首页 > news >正文

图像处理-Ch6-彩色图像处理

Ch6 彩色图像处理

无广告更易阅读,个人博客点此进入<–

文章目录

  • Ch6 彩色图像处理
    • 彩色基础
    • 彩色模型(Color models)
      • RGB(red, green, blue)
      • CMY & CMYK(cyan, magenta, yellow/and black)
      • HSI(hue, saturation, intensity)
      • HSV(hue, saturation, value)
    • 颜色空间及其转换(Converting to Other Color Spaces)
    • The Basics of Color Image Processing
    • Working Directly in RGB Vector Space

Q: 颜色(Color)是什么?

A: 人眼能够感知的部分电磁波信号。

本章需要了解:了解所有颜色空间、字母代表意思、均匀性颜色空间(L, V, B型)

彩色基础

区分不同颜色的特性通常是亮度、色调、饱和度。

  • 亮度:发光强度的消色概念。
  • 色调:混合光波中与主波长相关的属性、表示被观察者感知的主导色。(红色、橙色、黄色
  • 饱和度:相对的纯度,or 与一种色调混合的白光量。饱和度与所加的白光量成反比。
  • 色度:色调+饱和度。

三色值: X , Y , Z X,Y,Z X,Y,Z

CIE色度图: x , y , z = 1 − ( x + y ) x,y,z=1-(x+y) x,y,z=1(x+y), x(红)、y(绿)、z(蓝)

image-20241223164640062

CIELAB(CIE L*a*b*模型):保持色彩一致、独立于设备的色彩模型。

  • CIE L*a*b*色彩空间是一种与设备无关的色彩空间,能够准确地描述人眼可见的所有颜色。
  • 它在色彩匹配、色彩差异评估以及色彩管理系统中非常有用。
  • 它能够在不同的设备(如监视器、打印机等)之间保持一致的色彩表现。

L ∗ = 116 ⋅ ( Y Y n ) 1 3 − 16 a ∗ = 500 ⋅ ( ( X X n ) 1 3 − ( Y Y n ) 1 3 ) b ∗ = 200 ⋅ ( ( Y Y n ) 1 3 − ( Z Z n ) 1 3 ) L^\ast = 116 \cdot \left( \frac{Y}{Y_n} \right)^\frac{1}{3} - 16\\ a^\ast = 500 \cdot \left( \left( \frac{X}{X_n} \right)^\frac{1}{3} - \left( \frac{Y}{Y_n} \right)^\frac{1}{3} \right)\\ b^\ast = 200 \cdot \left( \left( \frac{Y}{Y_n} \right)^\frac{1}{3} - \left( \frac{Z}{Z_n} \right)^\frac{1}{3} \right) L=116(YnY)3116a=500((XnX)31(YnY)31)b=200((YnY)31(ZnZ)31)

彩色模型(Color models)

  • 面向硬件:RGB(red, green, blue)
  • 面向彩色打印开发:CMY,CMYK(cyan, magenta, yellow, black)
  • 面向人类描述和解释颜色的方式:HSI(hue, saturation, intensity)

RGB(red, green, blue)

在RGB颜色空间中,表示每个pixel所用的bit数称为像素深度。

image-20241223165514030

CMY & CMYK(cyan, magenta, yellow/and black)

颜料的原色:青色、深红色、黄色(用于彩色打印机),有时多加黑色。

  • 白光照射涂有青色颜料的表面时,表面不会反射红光。
  • 青色从反射的白光中减去红光、白光又等量的红绿蓝光组成。

HSI(hue, saturation, intensity)

观察彩色物体时,我们会用色调(hue)、饱和度(saturation)、亮度(intensity)来描述物体。

image-20241223170706349

HSV(hue, saturation, value)

HSV代表色调(Hue)、饱和度(Saturation)和明度(Value)。

  1. 色调(H):它是色彩的基本属性,用于区分不同的颜色种类,用角度来度量,取值范围通常是0° - 360°。例如,0°或360°代表红色,120°代表绿色,240°代表蓝色。
  2. 饱和度(S):表示颜色的纯度,取值范围是0 - 1。饱和度越高,颜色越鲜艳纯粹;饱和度为0时,颜色变为灰色(只有明度信息)。
  3. 明度(V):也称为亮度,代表颜色的明亮程度,取值范围是0 - 1。

颜色空间及其转换(Converting to Other Color Spaces)

自然界中存在一些颜色,无法使用RGB颜色空间定义。

XYZ颜色空间可以定义世界上一切颜色。

RGB → NTSC(YIQ):

NTSC(National Television Standards Committee,美国国家电视标准委员会)颜色空间是一种用于模拟电视广播的颜色编码系统。它将颜色信息分解为亮度(Y)和两个色度分量(I 和 Q)

与YUV空间相似:YUV 是一种颜色编码方法,主要用于视频系统。其中 “Y” 表示亮度(Luminance 或 Luma),也就是灰度值;而 “U” 和 “V” 表示色度(Chrominance 或 Chroma),用于描述颜色信息。
[ Y I Q ] = [ 0.299 0.587 0.114 0.596 − 0.274 − 0.322 0.211 − 0.523 0.312 ] [ R G B ] \begin{bmatrix} Y \\ I \\ Q \end{bmatrix} = \begin{bmatrix} 0.299 & 0.587 & 0.114 \\ 0.596 & -0.274 & -0.322 \\ 0.211 & -0.523 & 0.312 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} YIQ = 0.2990.5960.2110.5870.2740.5230.1140.3220.312 RGB
NTSC → RGB:
[ R G B ] = [ 1.000 0.956 0.621 1.000 − 0.272 − 0.647 1.000 − 1.106 1.703 ] [ Y I Q ] \begin{bmatrix} R \\ G \\ B \end{bmatrix} = \begin{bmatrix} 1.000 & 0.956 & 0.621 \\ 1.000 & -0.272 & -0.647 \\ 1.000 & -1.106 & 1.703 \end{bmatrix} \begin{bmatrix} Y \\ I \\ Q \end{bmatrix} RGB = 1.0001.0001.0000.9560.2721.1060.6210.6471.703 YIQ
RGB → YCbCr(用于编码数字图像):

YCbCr 是一种颜色空间,其中 “Y” 代表亮度(Luminance),“Cb” 和 “Cr” 分别代表蓝色色度(Chrominance of Blue)和红色色度(Chrominance of Red)。
[ Y C b C r ] = [ 16 128 128 ] + [ 65.481 128.553 24.966 − 37.797 − 74.203 112.000 112.000 − 93.786 − 18.214 ] [ R G B ] / 256 \begin{bmatrix} Y \\ Cb \\ Cr \end{bmatrix} = \begin{bmatrix} 16 \\ 128 \\ 128 \end{bmatrix} + \begin{bmatrix} 65.481 & 128.553 & 24.966 \\ -37.797 & -74.203 & 112.000 \\ 112.000 & -93.786 & -18.214 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} /256 YCbCr = 16128128 + 65.48137.797112.000128.55374.20393.78624.966112.00018.214 RGB /256
CMY & CMYK:

[ C M Y ] = [ 1 1 1 ] − [ R G B ] , [ R G B ] = [ 1 1 1 ] − [ C M Y ] \ \begin{bmatrix} C \\ M \\ Y \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} - \begin{bmatrix} R \\ G \\ B \end{bmatrix} ,\quad \begin{bmatrix} R \\ G \\ B \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} - \begin{bmatrix} C \\ M \\ Y \end{bmatrix}   CMY = 111 RGB , RGB = 111 CMY

RGB → HSI:
H = { θ if  B ≤ G 360 − θ if  B > G θ = cos ⁡ − 1 { 1 2 [ ( R − G ) + ( R − B ) ] [ ( R − G ) 2 + ( R − B ) ( G − B ) ] 1 2 } S = 1 − 3 R + G + B [ min ⁡ ( R , G , B ) ] I = 1 3 ( R + G + B ) \begin{align}H &= \begin{cases} \theta & \text{if } B \leq G \\ 360 - \theta & \text{if } B > G \end{cases}\\ \theta &= \cos^{-1}\left\{\frac{\frac{1}{2}[(R - G)+(R - B)]}{\left[(R - G)^2+(R - B)(G - B)\right]^{\frac{1}{2}}}\right\}\\ S &= 1 - \frac{3}{R + G + B}[\min(R, G, B)]\\ I &= \frac{1}{3}(R + G + B) \end{align} HθSI={θ360θif BGif B>G=cos1{[(RG)2+(RB)(GB)]2121[(RG)+(RB)]}=1R+G+B3[min(R,G,B)]=31(R+G+B)
HSI → RGB RG sector(0° ≤ H < 120°):
B = I ( 1 − S ) R = I [ 1 + S cos ⁡ H cos ⁡ ( 60 ° − H ) ] G = 3 I − ( R + B ) \begin{align} B &= I(1 - S)\\ R &= I\left[1+\frac{S\cos H}{\cos(60° - H)}\right]\\ G &= 3I-(R + B) \end{align} BRG=I(1S)=I[1+cos(60°H)ScosH]=3I(R+B)
HSI → RGB GB sector(120° ≤ H < 240°):
H = H − 120 ° R = I ( 1 − S ) G = I [ 1 + S cos ⁡ H cos ⁡ ( 60 ° − H ) ] B = 3 I − ( R + G ) \begin{align} H&= H - 120°\\ R &= I(1 - S)\\ G &= I\left[1+\frac{S\cos H}{\cos(60° - H)}\right]\\ B &= 3I-(R + G) \end{align} HRGB=H120°=I(1S)=I[1+cos(60°H)ScosH]=3I(R+G)
BR sector(240° ≤ H ≤ 360°):
H = H − 240 ° G = I ( 1 − S ) B = I [ 1 + S cos ⁡ H cos ⁡ ( 60 ° − H ) ] R = 3 I − ( G + B ) \begin{align} H &= H - 240°\\ G &= I(1 - S)\\ B &= I\left[1+\frac{S\cos H}{\cos(60° - H)}\right]\\ R &= 3I-(G + B) \end{align} HGBR=H240°=I(1S)=I[1+cos(60°H)ScosH]=3I(G+B)

The Basics of Color Image Processing

Q: 如何度量两个颜色之间的相似性

RBG值是向量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插值映射函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Working Directly in RGB Vector Space

使用梯度的颜色边缘检测

梯度(gradient):
∇ f = [ G x G y ] = [ ∂ f ∂ x ∂ f ∂ y ] \nabla f=\left[\begin{array}{l} G_{x} \\ G_{y} \end{array}\right]=\left[\begin{array}{l} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{array}\right] f=[GxGy]=[xfyf]

幅度(magnitude):
∣ ∇ f ∣ = mag ⁡ ( ∇ f ) = [ G x 2 + G y 2 ] 1 / 2 = [ ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 ] 1 / 2 |\nabla f|=\operatorname{mag}(\nabla f)=\left[G_{x}^{2}+G_{y}^{2}\right]^{1 / 2}=\left[\left(\frac{\partial f}{\partial x}\right)^{2}+\left(\frac{\partial f}{\partial y}\right)^{2}\right]^{1 / 2} ∣∇f=mag(f)=[Gx2+Gy2]1/2=[(xf)2+(yf)2]1/2
角度(angle):
α ( x , y ) = tan ⁡ − 1 ( G y G x ) \alpha(x, y)=\tan ^{-1}\left(\frac{G_{y}}{G_{x}}\right) α(x,y)=tan1(GxGy)

r、g和b是沿R、G和B轴的单位向量 :
u = ∂ R ∂ x r + ∂ G ∂ x g + ∂ B ∂ x b , v = ∂ R ∂ y r + ∂ G ∂ y g + ∂ B ∂ y b u=\frac{\partial R}{\partial x} r+\frac{\partial G}{\partial x} g+\frac{\partial B}{\partial x} b,\quad v=\frac{\partial R}{\partial y} r+\frac{\partial G}{\partial y} g+\frac{\partial B}{\partial y} b u=xRr+xGg+xBb,v=yRr+yGg+yBb
定义数量(Quantities):
g x x = u ⋅ u = u T u = ∣ ∂ R ∂ x ∣ 2 + ∣ ∂ G ∂ x ∣ 2 + ∣ ∂ B ∂ x ∣ 2 g y y = v ⋅ v = v T v = ∣ ∂ R ∂ y ∣ 2 + ∣ ∂ G ∂ y ∣ 2 + ∣ ∂ B ∂ y ∣ 2 g x y = u ⋅ v = u T v = ∂ R ∂ x ∂ R ∂ y + ∂ G ∂ x ∂ G ∂ y + ∂ B ∂ x ∂ B ∂ y g_{x x}=u \cdot u=u^{T} u=\left|\frac{\partial R}{\partial x}\right|^{2}+\left|\frac{\partial G}{\partial x}\right|^{2}+\left|\frac{\partial B}{\partial x}\right|^{2}\\ g_{y y}=v \cdot v=v^{T} v=\left|\frac{\partial R}{\partial y}\right|^{2}+\left|\frac{\partial G}{\partial y}\right|^{2}+\left|\frac{\partial B}{\partial y}\right|^{2}\\ g_{x y}=u \cdot v=u^{T} v=\frac{\partial R}{\partial x} \frac{\partial R}{\partial y}+\frac{\partial G}{\partial x} \frac{\partial G}{\partial y}+\frac{\partial B}{\partial x} \frac{\partial B}{\partial y} gxx=uu=uTu= xR 2+ xG 2+ xB 2gyy=vv=vTv= yR 2+ yG 2+ yB 2gxy=uv=uTv=xRyR+xGyG+xByB
角度是c(x,y)最大变化率的方向为 θ ( x , y ) \theta(x,y) θ(x,y), 对应变化率的值为 F θ ( x , y ) F_{\theta}(x,y) Fθ(x,y):
θ ( x , y ) = 1 2 tan ⁡ − 1 ( 2 g x y g x x − g y y ) F θ ( x , y ) = 1 2 { [ g x x + g y y + ( g x x − g y y ) cos ⁡ 2 θ + 2 g x y sin ⁡ 2 θ ] 1 / 2 } \theta(x, y)=\frac{1}{2} \tan ^{-1}\left(\frac{2 g_{x y}}{g_{x x}-g_{y y}}\right)\\ F_{\theta}(x, y)=\frac{1}{2}\left\{\left[g_{x x}+g_{y y}+\left(g_{x x}-g_{y y}\right) \cos 2 \theta+2 g_{x y} \sin 2 \theta\right]^{1 / 2}\right\} θ(x,y)=21tan1(gxxgyy2gxy)Fθ(x,y)=21{[gxx+gyy+(gxxgyy)cos2θ+2gxysin2θ]1/2}

RGB向量空间中的图像分割

如何获得一个感兴趣的模型?

距离度量(欧式距离):
D ( z , m ) = ∥ z − m ∥ = [ ( z − m ) T ( z − m ) ] 1 / 2 = [ ( z R − m R ) 2 + ( z G − m G ) 2 + ( z B − m B ) 2 ] 1 / 2 \begin{align} D(z, m)&=\|z - m\|\\ &=\left[(z - m)^{T}(z - m)\right]^{1 / 2}\\ &=\left[\left(z_{R}-m_{R}\right)^{2}+\left(z_{G}-m_{G}\right)^{2}+\left(z_{B}-m_{B}\right)^{2}\right]^{1 / 2} \end{align} D(z,m)=zm=[(zm)T(zm)]1/2=[(zRmR)2+(zGmG)2+(zBmB)2]1/2

上式使用欧氏距离。前提是量纲最好一致。

如果不一致,那么看下面的形式,类似于马氏距离。

一种有用的推广是如下形式的距离度量:
D ( z , m ) = [ ( z − m ) T C − 1 ( z − m ) ] 1 / 2 D(z, m)=\left[(z - m)^{T} C^{-1}(z - m)\right]^{1 / 2} D(z,m)=[(zm)TC1(zm)]1/2
C ≥ 0 , ∣ C ∣ ≠ 0 C\ge 0,|C|\neq0 C0,C=0, 可以被定义为任意形式。

B}\right){2}\right]{1 / 2}
\end{align}
$$

上式使用欧氏距离。前提是量纲最好一致。

如果不一致,那么看下面的形式,类似于马氏距离。

一种有用的推广是如下形式的距离度量:
D ( z , m ) = [ ( z − m ) T C − 1 ( z − m ) ] 1 / 2 D(z, m)=\left[(z - m)^{T} C^{-1}(z - m)\right]^{1 / 2} D(z,m)=[(zm)TC1(zm)]1/2
C ≥ 0 , ∣ C ∣ ≠ 0 C\ge 0,|C|\neq0 C0,C=0, 可以被定义为任意形式。

相关文章:

图像处理-Ch6-彩色图像处理

Ch6 彩色图像处理 无广告更易阅读&#xff0c;个人博客点此进入<– 文章目录 Ch6 彩色图像处理彩色基础彩色模型(Color models)RGB(red, green, blue)CMY & CMYK(cyan, magenta, yellow/and black)HSI(hue, saturation, intensity)HSV(hue, saturation, value) 颜色空…...

Redis可视化工具 RDM mac安装使用

第一步&#xff1a;https://pan.baidu.com/s/10vpdhw7YfDD7G4yZCGtqQg?at1673701651004将dmg下载 第二部&#xff1a;点击下载的dmg文件进行安装、mac可能会提示&#xff1a; 无法验证此App不包含恶意软件 解决方法&#xff1a; 打开系统偏好设置>安全性与隐私>通用&am…...

单元测试/系统测试/集成测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、单元测试的概念 单元测试是对软件基本组成单元进行的测试&#xff0c;如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…...

多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码

一、麋鹿优化算法 麋鹿优化算法&#xff08;Elephant Herding Optimization&#xff0c;EHO&#xff09;是2024年提出的一种启发式优化算法&#xff0c;该算法的灵感来源于麋鹿群的繁殖过程&#xff0c;包括发情期和产犊期。在发情期&#xff0c;麋鹿群根据公麋鹿之间的争斗分…...

机器学习和深度学习中的种子设置

一、常见的随机数生成器及其对应的设置方法&#xff1a; Python内置的随机数生成器&#xff1a; import random random.seed(manual_seed)NumPy的随机数生成器&#xff1a; import numpy as np np.random.seed(manual_seed)PyTorch的随机数生成器&#xff1a; import torch tor…...

[手机Linux] 七,NextCloud优化设置

安装完成后在个人设置里发现很多警告&#xff0c;一一消除。 只能一条一条解决了。 关于您的设置有一些错误。 1&#xff0c;PHP 内存限制低于建议值 512 MB。 设置php配置文件&#xff1a; /usr/local/php/etc/php.ini 把里面的&#xff1a; memory_limit 128M 根据你自…...

Ruby+Selenium教程

什么是 Minitest&#xff1f; Minitest 是 Ruby 的测试框架&#xff0c;提供一整套测试工具。它运行速度快&#xff0c;支持 TDD、BDD、模拟和基准测试 以下是使用Ruby、Selenium WebDriver和Minitest 的脚本&#xff0c;用于断言 Restful Booker Platform 的“页面标题”等于…...

【论文阅读笔记】Learning to sample

Learning to sample 前沿引言方法问题声明S-NET匹配ProgressiveNet: sampling as ordering 实验分类检索重建 结论附录 前沿 这是一篇比较经典的基于深度学习的点云下采样方法 核心创新点&#xff1a; 首次提出了一种学习驱动的、任务特定的点云采样方法引入了两种采样网络&…...

边缘计算收益稳定

要使自己的PCDN&#xff08;Personal Content Delivery Network&#xff0c;个人内容分发网络&#xff09;收益更稳定&#xff0c;可以从以下几个方面进行努力&#xff1a; 一、选择合适的PCDN平台 平台稳定性&#xff1a;选择技术成熟、稳定性高的PCDN平台&#xff0c;确保内…...

域名和服务器是什么?域名和服务器是什么关系?

在互联网的生态系统中&#xff0c;域名和服务器是两个至关重要的组成部分。它们共同构成了我们访问网站和使用在线服务的基础。那么域名和服务器是什么?域名和服务器是什么关系? 1、域名的概念 域名是互联网中用于标识特定地址的一种文字形式。它是用户访问网站时输入的易记…...

IBatis和MyBatis在细节上的不同有哪些

iBatis 和 MyBatis 都是流行的 Java 持久化框架&#xff0c;用于简化数据库交互。MyBatis 是从 iBatis 演化而来&#xff0c;MyBatis 在 iBatis 的基础上做了很多改进和优化&#xff0c;因此两者在设计和功能上存在一些差异。以下是它们在细节上的主要区别&#xff1a; 1. 框架…...

使用Python获取PDF文本和图片的精确位置

在处理和分析PDF文档时&#xff0c;获取文本和图片在页面上的精确位置是一个重要的操作。通过确定这些元素的具体坐标&#xff0c;我们可以实现对PDF内容的更精细控制和理解&#xff0c;这对于自动化文档处理、信息提取以及内容重组等工作流程尤为关键。通过Python编程语言&…...

【AI日记】24.12.25 kaggle 比赛 2-13

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset时间&#xff1a;8 小时 读书 书名&#xff1a;我们能做什么 : 胡适与中国青年最真诚的分享时间&#xff1a;1.5 小时 律己 工作…...

【网络安全】用 Frida 修改软件为你所用

用 Frida 修改软件为你所用 Frida是一个强大的设备操作工具&#xff0c;它允许我们分析、修改和与运行中的应用程序交互。Frida通过在目标进程中创建一个线程&#xff0c;并通过这个线程执行一些启动代码来实现交互功能。这种交互被称为“代理”&#xff0c;它允许我们添加Jav…...

《信管通低代码信息管理系统开发平台》Windows环境安装说明

1 简介 《信管通低代码信息管理系统应用平台》提供多环境软件产品开发服务&#xff0c;包括单机、局域网和互联网。我们专注于适用国产硬件和操作系统应用软件开发应用。为事业单位和企业提供行业软件定制开发&#xff0c;满足其独特需求。无论是简单的应用还是复杂的系统&…...

使用强化学习与遗传算法优化3D低空物流路径_版本2

在快速发展的物流与自主系统领域&#xff0c;优化无人机在三维空间中的飞行路径至关重要。无论是在城市环境中导航还是在复杂地形中穿行&#xff0c;确保高效、安全且节能的航线规划能够显著提升运营效率。本文将深入探讨一种创新方法&#xff0c;结合强化学习&#xff08;Rein…...

【MinIO系列】MinIO Client (mc) 完全指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中&#xff0c;轮播图是一种常见的用户界面元素&#xff0c;用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现&#xff0c;详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先&#xff0c;在home.js文件中&a…...

React与Vue的区别(相同点和不同点)

前言 JavaScript是世界上最流行的语言之一&#xff0c;React和Vue是JS最流行的两个框架。但各有优缺点&#xff0c;本文将详细对比两大框架 一、框架背景 React React是由Facebook开发的用于构建用户界面的JavaScript库&#xff0c;Facebook对市场上JavaScript MVC框架都不太…...

Python语言的文件操作

Python语言的文件操作 在现代编程中&#xff0c;文件操作是每个程序员都需要掌握的基本技能之一。无论是数据的持久化存储、日志的记录&#xff0c;还是配置信息的读取&#xff0c;文件操作都是不可或缺的一部分。Python作为一种高级编程语言&#xff0c;其简单易用的文件操作…...

ORM 框架的优缺点分析

ORM 框架的优缺点分析 一、ORM 框架概述 ORM(Object-Relational Mapping)是一种将关系型数据库与面向对象编程进行映射的技术框架。它通过将数据库表映射为编程语言中的类,将记录映射为对象,将字段映射为属性,实现了用面向对象的方式操作数据库。 核心价值:ORM 在数据库和…...

java虚拟机2

一、垃圾回收机制&#xff08;GC&#xff09; 1. 回收区域&#xff1a;GC主要回收堆内存区域。堆用于存放new出来的对象 。程序计数器、元数据区和栈一般不是GC回收的重点区域。 2. 回收单位&#xff1a;GC以对象为单位回收内存&#xff0c;而非字节。按对象维度回收更简便&am…...

[问题解决]:Unable to find image ‘containrrr/watchtower:latest‘ locally

一&#xff0c;问题 在使用docker安装部署新应用的时候&#xff0c;报错&#xff1a;Unable to find image containrrr/watchtower:latest locally 分析认为是当前docker的资源库里找不到这个软件的镜像&#xff0c;需要配置一个包含这个软件镜像的新的资源库。 二&#xff0…...

AI Agent工具全景解析:从Coze到RAGflow,探索智能体自动化未来!

在人工智能技术持续深入行业应用的背景下&#xff0c;越来越多的企业和个人寻求通过自动化技术来提高效率和减少重复性劳动&#xff0c;AI Agent的崛起已经成为了不可忽视的趋势。AI Agent&#xff0c;即人工智能代理&#xff0c;是一种基于先进的人工智能技术&#xff0c;特别…...

WPS自动换行

换行前 换行后 快捷键 第一步&#xff1a;启用「自动换行」功能 选中目标单元格/区域&#xff1a;点击需要设置的单元格&#xff08;或拖动选中多个单元格&#xff09;。开启自动换行&#xff08;3种方式任选&#xff09;&#xff1a; 快捷按钮&#xff1a;在顶部菜单栏点击「…...

深入剖析 C 语言中的指针数组与数组指针

资料合集下载链接: ​​https://pan.quark.cn/s/472bbdfcd014​​ 在C语言中,指针是其强大和灵活性的核心。然而,围绕指针的概念有很多容易混淆的地方,其中“指针数组”和“数组指针”就是一对常见的“双胞胎”概念。它们名称相似,但含义和用法却大相径庭。 本文旨在清…...

MongoDB选择理由

1.简介 MongoDB是一个基于分布式文件存储的数据库由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。Mongo最大的特点是…...

Rust 开发的一些GUI库

最近考虑用Rust干点什么&#xff0c;于是搜集了下资料——根据2025年最新调研结果和社区实践&#xff0c;Rust GUI库生态已形成多个成熟度不同的解决方案。以下是当前主流的GUI库分类及特点分析&#xff0c;结合跨平台支持、开发体验和实际应用场景进行综合评估&#xff1a; 一…...

.NET 8使用AOT发布ASP.NET Core应用

.NET 8 使用 AOT 发布 ASP.NET Core 应用 一、AOT 编译简介 在 .NET 开发中&#xff0c;编译方式有多种&#xff0c;其中 AOT&#xff08;Ahead-Of-Time&#xff09;编译是一种区别于传统 JIT&#xff08;Just-In-Time&#xff09;编译的方式。传统的 JIT 编译是在 .NET 应用…...

数据的类型——认识你的数据

第02篇&#xff1a;数据的类型——认识你的数据 写在前面&#xff1a;嗨&#xff0c;大家好&#xff01;我是蓝皮怪。在上一篇文章中&#xff0c;我们聊了统计学的基本概念&#xff0c;今天我们来深入了解一个非常重要的话题——数据的类型。你可能会想&#xff1a;"数据就…...