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

学习笔记之初识HALCON

目录

一、概要

二、数据结构

1、图像Image

2、Region区域

3、XLD

三、图像预处理

1、图像的变换与校正

2、图像增强

四、图像的形态学处理

1、边界提取

2、孔洞填充

3、骨架

五、图像金字塔

六、区域分割

1、区域生长

2、区域分裂与合并

七、边缘检测

1、Prewitt算子

2、Kirsch算子

3、Canny算子


一、概要

目前适用于机器视觉的算法包中比较主流的有OpenCV、HALCON、VisionPro、MIL等。

OpenCV为开源计算机视觉库,主要针对图像处理应用;VisionPro简单易用,最容易上手;

HALCON提供了一个综合视觉库,用户可以利用其开放式结构快速开发图像处理和机器视觉软件。HALCON以其强大的功能、算法集成度高而占有相当大的优势。

HALCON常用应用功能:

①图像数据类型转换。可快速转换成Region/XLD类型进行处理。

②图像的变换与校正。可对畸变的图像进行变换与校正,方便后续处理。

③图像的增强处理。基于空域和基于频域两大类算法,对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征。

④BLOB分析。对前景/背景分离后的二值图像,进行连通域提取和标记。包括全局阈值分割、局部阈值分割、自动阈值分割

⑤特征提取。可运用任意结构进行特征提取。

⑥形态学。可以使用任意结构对Region和Image进行腐蚀、膨胀、开/闭运算处理,以获取想要的Region和Image。

⑦匹配。包括基于点匹配、基于灰度值匹配、基于描述符匹配、基于相关性匹配、基于形状匹配等。利用匹配技术可高效地进行检测,即使目标发生旋转、放缩、局部变形、部分遮挡或者光照有非线性变化,利用XLD匹配技术也可实时、有效、准确地找到目标。

⑧标定。标定功能可以建立二维图像的点与三维空间中的点的对应关系,将相机与现实世界进行联系。

⑨双目立体视觉(三维立体视觉匹配)​。

⑩测量。提供有1D测量、2D测量和3D测量

资料来源:《机器视觉技术基础》肖苏华 著 出版时间:2021年5月

二、数据结构

1、图像Image

图像采集设备不但在空间上把图像离散化,同时也会把灰度值离散化到某一固定的灰度级范围内。多数情况下,灰度值被离散化为8位(一个字节)​,也就是,所有可能的灰度值所组成的集合是0~255

图像的通道是图像的组成像素的描述方式,如果图像内像素点的值能用一个灰度级数值描述,那么图像有一个通道。比如灰色图像,每个像素的灰度值为0~255;如果像素点的值能用三原色描述,那么图像有三个通道。比如RGB是最常见的颜色表示方式,它的每个像素拥有R(Red,红色)​、G(Green,绿色)​、B(Blue,蓝色)3个通道,各自的取值范围都是0~255。彩色图像如果只存在红色和绿色、没有蓝色,并不意味着没有蓝色通道。一幅完整的彩色图像,红色、绿色、蓝色三个通道同时存在,图像中不存在蓝色只能说明蓝色通道上各像素值为零。

单通道灰度图:    三通道RGB图:

在一般的图像处理中,灰度图像已经可以满足要求。因此,为了节约计算量并加快速度,通常会将彩色图像转换成灰度图像进行处理。

通道合并与分离,可能有以下一些场景:

①将两图像的通道叠加得到新图像

②将三个单通道灰度图像合并成一个三通道彩色图像

③将多幅单通道图像合并成一幅多通道彩色图像

④将三通道彩色图像转化为三个单通道灰度图像

⑤将多通道图像转换为多幅单通道图像

⑥将彩色图像从RGB空间转换到其他颜色空间(包括‘hsv’、‘hls’、‘hsi’、‘ihs’、‘yiq’、‘yuv’等)

2、Region区域

Region指图像中的一块区域

ROI指图像上某一特定的感兴趣区域。是指从被处理的图像中以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。

(1)二值图像:一个二值图像用灰度值0表示不在区域内的点,用1(或其他非0的数)表示被包含在区域内的点。区域就是某种具有结构体性质的二值图

(2)region的特征

①基础特征:Region的面积、中心、宽高、左上角与右下角坐标、长半轴、短半轴、椭圆方向、粗糙度、连通数、最大半径、方向等。

②形状特征:外接圆半径、内接圆半径、圆度、紧密度、矩形度、凸性、偏心率、外接矩形的方向等。

③几何矩特征:二阶矩、三阶矩、主惯性轴等

(3)将Image转换成Region

①可以利用阈值分割进行转化

②使用灰度直方图进行转化

3、XLD

XLD(eXtended Line Descriptions)称为亚像素精度轮廓,指图像中某一块区域的轮廓。图像中Image和区域Region这些数据结构是像素精度的,像素越高,分辨率越大,图像就越清晰。点与点之间的最小距离就是一个像素的宽度,在实际工业应用中,可能需要比图像像素分辨率更高的精度,这时就需要提取亚像素精度数据,亚像素精度数据可以通过亚像素阈值分割或者亚像素边缘提取来获得。

XLD特征

①基础特征:XLD面积、中心、宽高、左上角及右下角坐标。

②形状特征:圆度、紧密度、长度、矩形度、凸性、偏心率、外接矩形的方向及两边的长度等。

③云点特征:云点面积、中心、等效椭圆半轴及角度、云点方向等。

④几何矩特征:二阶矩等。

三、图像预处理

1、图像的变换与校正

主要的几何变换方法,包括图像平移变换、比例缩放、旋转、仿射变换和投影变换。

(1) 图像的平移、旋转和缩放

图像的平移是指将图像中的所有像素点按照要求的平移量进行垂直或水平移动。平移变换只改变了原有图像在画面上的位置,而图像的内容不会发生变化。

图像的旋转是指将图像围绕某一指定点逆时针或顺时针方向旋转一定的角度,通常是以图像的中心为原点。旋转后,图像的大小一般会改变。

图像的缩放是指将图像大小按照指定比率放大或缩小。

(2) 图像的仿射变换

仿射变换就是把平移、旋转和缩放结合起来。

插值类型:有'bicubic','bilinear','constant','nearest_neighbor','weighted'五种类型,默认为'constant'。

'nearest_neighbor':最近邻插值,灰度值由最近像素的灰度值确定,处理质量低,但速度快。

'bilinear':双线性插值,灰度值由最近的四个像素通过双线性插值确定。如果仿射变换包含比例因子小于1的缩放,则不执行平滑,这可能会导致严重的锯齿效果,处理质量和运行速度均为中等。

'bicubic':双三次插值。灰度值由最近的像素点通过双三次插值确定。如果仿射变换包含比例因子小于1的缩放,则不执行平滑,这可能会导致严重的锯齿效果,处理质量高,运行速度慢。

'constant':双线性插值。灰度值由最近的四个像素通过双线性插值确定。如果仿射变换包含比例因子小于1的缩放,则使用一种平均滤波器来防止混叠效果,处理质量和运行速度均为中等。

'weighted':双线性插值。灰度值由最近的四个像素通过双线性插值确定。如果仿射变换包含比例因子小于1的缩放,则使用一种高斯滤波器来防止混叠效果,处理质量高,运行速度慢。

(3) 图像的投影变换

仿射变换几乎能校正物体所有可能发生的与位姿相关的变化,但并不能应付所有情况。需要应用投影变换的情况很多,如对边不再平行,或者发生了透视畸变等。二维码的投影变换如下图:

2、图像增强

图像增强技术基本可以分为两种方法:空间域处理法频率域处理法

空间域处理法是指在空间域中,直接对图像的像素灰度值进行增强处理。它又分为点运算和邻域运算两大类。

频域处理法的基础是卷积定理,它是指在频域下通过进行某种图像变换(如傅里叶变换、离散余弦变换和小波变换等)得到结果并修改的方法来实现对图像的增强处理。常用的方法包括低通滤波、高通滤波以及同态滤波等。

(1) 灰度变换

灰度变换(有时又被称为图像的对比度增强或对比度拉伸)​,是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。常用的方法有三种:线性灰度变换、分段线性灰度变换和非线性灰度变换。

(2) 直方图修正法

直方图修正法通常有直方图均衡化直方图规定化两种方法。

①直方图均衡化 是指通过对原图像进行某种变换,使原图像的灰度直方图修正为均匀分布的一种形式。通过直方图均衡化,像素将尽可能多地占有灰度级并且分布均匀,也就是说,原图中大量像素点灰度值相似的区域灰度范围将变宽,因此,处理后的图像将拥有较大的动态范围和较高的对比度,使图像更加清晰。

②直方图规定化 在某些情况下,并不需要对图像进行全局均匀化处理,而是希望有针对性地增强图像某个灰度范围,直方图规定化方法就是针对上述思想提出来的。直方图规定化是指使原图像灰度直方图变成规定形状的直方图而对图像作修正的一种增强方法。直方图均衡化处理只是直方图规定化的一个特例。

(3) 局部统计法

可以运用Wallis和Jong-Sen Lee提出的局部均值和方差增强图像对比度

(4) 图像的平滑

图像平滑处理就是为了抑制噪声,使图像亮度趋于平缓渐变,减小突变梯度,进而改善图像质量的一种图像增强方法。它主要是利用噪声点像素的灰度与其邻近像素的灰度显著不同,通过突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分对图像进行处理,图像平滑处理在空间域中主要有邻域平均法、加权平均法和中值滤波法这三种方法。

邻域平均法(也称为均值滤波器),其基本原理是在图像中选择一个邻域,用邻域范围内的像素灰度的平均值来代替该邻域中心点像素的灰度值。常用的邻域为4邻域点和8邻域点。

中值滤波法,中值滤波是指对邻域内的像素灰度值进行排序,用其中值代替中心点像素灰度值的图像平滑方法。中值滤波提出后,首先应用于一维信号处理,后来很快被应用到二维。

多图像平均法,当一幅图像包含噪声对于坐标点是不相关且平均值为零的加性噪声时,就可以采用多图像平均法来进行去噪处理。多图像平均法是利用获取同一物景下的多幅图像的平均值来消除噪声。

(5) 图像的锐化

一般来说,噪声主要是在高频部分,但是边缘信息也同样在高频部分,这也导致图像经平滑处理后,在消除噪声的同时也会使图像边缘和图像轮廓模糊。为了减少这类不利效果的影响,可以通过锐化滤波器实现,它可以减弱或消除图像的低频分量,使得除边缘以外的像素点的灰度值趋向于零,从而增强图像中物体的边缘轮廓信息

可用微分运算来实现图像的锐化。微分运算是求信号的变化率,有加强高频分量的作用,从而使图像轮廓清晰。

1.一阶微分算子增强——梯度法

Sobel算子也是常用的一阶微分算子,它结合了高斯平滑和微分求导,使用卷积核对图像中的每个像素点做卷积和运算,然后采用合适的阈值提取边缘。Sobel算子有两个卷积核,分别对应x和y两个方向。采用Sobel算子可以避免梯度微分锐化时图像中噪声、条纹等干扰信息的增强。

Sobel算子模板:

2.二阶微分算子增强——拉普拉斯(Laplacian)算子

在图像的边缘区域,像素值会发生比较大的变化,对这些像素求导会出现极值,在这些极值位置,其二阶导数为0,所以也可以用二阶微分算子来检测图像边缘。

拉普拉斯算子模板:

(6) 低通滤波法

低通滤波法属于频域平滑滤波法,其核心思想是适当滤除图像变换域中的高频成分保留低频成分,实现在频域中的平滑处理。4种典型的低通滤波器:

①理想低通滤波器(ILPF)

②巴特沃斯低通滤波器(BLPF)

③指数低通滤波器(ELPT)

④梯形低通滤波器(TLPF)

(7) 高通滤波法

图像的边缘信息对应图像频谱的高频部分,而图像模糊主要体现高频分量大大减弱,所以采用高通滤波法使图像中高频分量顺利通过,同时抑制低频分量,就可以使图像的边缘信息变得清晰,实现图像的锐化。四种经典的髙通滤波器:

①理想高通滤波器(IHPF):可以用计算机模拟实现,但不能用实际的硬件实现

②巴特沃斯高通滤波器(BHPF)

③指数高通滤波器(EHPF)

④梯形高通滤波器(THPF)

(8) 同态滤波增强

在实际工作中,常会碰到灰度动态范围很大,而感兴趣的某部分物体灰度级范围又较小的图像。这种情况下,采用一般的灰度线性变换很难获得较好的效果。例如,扩展灰度级可以提高图像的对比度,但同时会增大图像的灰度动态范围;压缩灰度级可以减小动态范围,但会使目标的灰度层次和细节模糊不清。同态滤波是把图像的照明反射模型作为频域处理的基础,将亮度范围压缩对比度增强使图像清晰的一种频域方法。

四、图像的形态学处理

基本形态学运算,包括腐蚀、膨胀,以及开、闭运算。腐蚀与膨胀是形态学运算的基础。

腐蚀可以消除图像边界点,是边界向内部收缩的过程。

膨胀是腐蚀运算的对偶运算,膨胀可以填充图像内部的小孔及图像边缘处的小凹陷部分,并能够磨平图像向外的尖角。

开运算与闭运算是由腐蚀和膨胀复合而成的,开运算是先腐蚀后膨胀,闭运算是先膨胀后腐蚀,可以在保留图像主体部分的同时,处理图像中出现的各种杂点、空洞、小的间隙、毛糙的边缘等。

击中击不中变换是形状检测的一个基本工具,例如识别孤立的前景像素或者线段的端点像素是非常有效的。

顶帽运算和底帽运算就是在开运算和闭运算的基础上,来处理图像中出现的各种杂点、空洞、小的间隙、毛糙的边缘等。顶帽运算就是在原始的图像的基础上减去开运算的图像。底帽运算就是在原始的图像的闭运算的基础上减去原图像

在处理二值图像时,形态学的主要应用之一是提取用于表示和描述形状的图像成分。特别是我们要考虑提取边界、连通分量、凸壳区域的骨架的形态学算法。

1、边界提取

要在二值图像中提取物体的边界,一个方法是将所有物体内部的点删除(置为背景色)​。当我们逐行扫描原图像时,如果发现一个黑点的8邻域都是黑点,那么该点被认为是内部点,对于内部点需要在目标图像上将它删除,只有那些8邻域都是黑点的内部点被保存,这相当于采用一个c3×3的结构元素对原图像进行腐蚀,再用原图像减去腐蚀后的图像,这样就恰好删除了这些内部点留下了边界。

2、孔洞填充

一个孔洞可以定义为由前景像素相连接的边界所包围的一个背景区域

3、骨架

“骨架”是指一幅图像的骨骼部分,它描述物体的几何形状和拓扑结构。计算骨架的过程一般称为“细化”或“骨架化”​。

五、图像金字塔

图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过梯次向下采样产生,直到达到某个终止条件才停止采样,最小的图像可能仅仅有一个像素点。金字塔的底部是用待处理图像的高分辨率表示,而顶部是低分辨率的近似,向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低。通常情况下,每向上移动一级,图像的宽和高都降低为原来的二分之一。

常见的图像金字塔有两种:高斯金字塔拉普拉斯金字塔

高斯金字塔(Gaussian Pyramid)用来向下采样,是主要的图像金字塔。拉普拉斯金字塔(Laplacian Pyramid)用来从金字塔低层图像重建上层未采样图像,也就是在数字图像处理中的预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反)​,向上就是图像尺寸加倍向下就是图像尺寸减半

六、区域分割

一幅图像中属于同一区域的像素具有相同或相似的属性。区域分割就是利用图像该性质进行划分,将具有相同属性的像素归为同一区域,不同属性的像素归为不同区域。传统的区域分割方法有区域生长区域分裂与合并,其中前者又是最基础的区域分割方法。

1、区域生长

区域生长法的基本思想是将一幅图像中具有相似性质的像素聚集起来构成区域。具体来说,首先在图像上选定一个“种子”像素或者“种子”区域,然后以种子像素为生长点,从邻域像素开始搜寻,接着比较种子周围像素与种子相邻像素的相似性,将有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判断)合并到种子像素所在的区域中。最后将这些新像素作为新的种子像素继续进行上述操作,直到再没有满足条件的像素为止,这样就达到了目标物体分割的目的。

区域生长方法为以下三个步骤:

①选择合适的种子像素;②确定区域生长准则;③确定区域生长的终止条件

2、区域分裂与合并

如果事先完全不了解区域形状和区域数目时,可采用分裂合并法。在某种意义上,分裂与合并法是区域生长法的逆过程:它从整个图像出发,在开始时将图像不断分裂成各个任意不相交的区域,然后根据某种准则将前景区域合并,最终实现图像分割的目的。

七、边缘检测

通常可将边缘检测的算法分为2类:基于查找的算法基于零穿越的算法。除此之外,还有Canny边缘检测算法、统计判别方法等。

基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向,是基于一阶导数的边缘检测算法。基于一阶导数的边缘检测算子包括Roberts算子、Sobel算子、Prewitt算子等。

基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是拉普拉斯过零点或者非线性差分表示的过零点,是基于二阶导数的边缘检测算法。基于二阶导数的边缘检测算子主要是高斯-拉普拉斯边缘检测算子以及Canny算子

1、Prewitt算子

Prewitt算子是通过利用像素点上下、左右邻点灰度差,在边缘处达到极值的方法检测边缘。它的方程和Sobel算子完全一样,因此都考虑了邻域信息,所不同的是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。

Prewitt算子不仅能检测边缘点,而且能抑制噪声的影响,因此对灰度和噪声较多的图像处理得较好。

2、Kirsch算子

Kirsch算法由K0~K7八个方向的模板决定,将K0~K7的模板元素分别与当前像素点的3×3模板区域的像素点相乘,然后选八个值中最大的值作为中央像素的边缘强度。

3、Canny算子

Canny算子检测边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。该方法是使用两个阈值来分别检测强边缘弱边缘,因此不易受噪声的干扰,能够检测到真正的弱边缘。

相关文章:

学习笔记之初识HALCON

目录 一、概要 二、数据结构 1、图像Image 2、Region区域 3、XLD 三、图像预处理 1、图像的变换与校正 2、图像增强 四、图像的形态学处理 1、边界提取 2、孔洞填充 3、骨架 五、图像金字塔 六、区域分割 1、区域生长 2、区域分裂与合并 七、边缘检测 1、Pre…...

嵌入式硬件杂谈(七)IGBT MOS管 三极管应用场景与区别

引言:在现代嵌入式硬件设计中,开关元件作为电路中的重要组成部分,起着至关重要的作用。三种主要的开关元件——IGBT(绝缘栅双极型晶体管)、MOSFET(金属氧化物半导体场效应晶体管)和三极管&#…...

【Rust自学】7.1. Package、Crate和定义Module

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.1.1. Rust的代码组织 代码组织主要包括: 那些细节可以对外暴露,而哪些细节是私有的在作用域内哪些名称有效… …...

【已解决】pyinstaller打包ico图片报错:OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。

起因: pyinstaller加上 --icon 参数打包时报错。 命令如下: 解决: 关闭 Windows 的病毒防护即可,步骤如下。 点屏幕右下角通知栏,进入“病毒和威胁防护”: 打开: 关闭实时保护&#xff08…...

广东粤万润与时序数据库TDengine携手打造智慧酒店新未来:数据驱动智能化转型

在智能化转型浪潮席卷全球的当下,智慧酒店行业已然成为推进智能生活应用的先锋领域。从智能照明到环境监测,从安防系统到沉浸式影音娱乐,智慧酒店通过技术赋能为用户提供了更加舒适、高效且个性化的服务体验。然而,随着设备的增多…...

基于云计算的分布式文件存储系统设计与实现

基于云计算的分布式文件存储系统设计与实现 第一章 绪论 1.1 研究背景及意义 随着互联网技术的飞速发展,云计算作为一种新兴的计算模式,以其弹性伸缩、按需分配和成本效益高等特点,逐渐成为信息技术领域的研究热点。它为大数据处理、高性能…...

基于顺序表实现队列循环队列的处理

文章目录 1.假溢出的现象2.循环队列3.顺序表实现队列架构4.顺序表模拟实现队列5.设计循环队列(校招难度) 1.假溢出的现象 下面的这个就是我们的假溢出的这个现象的基本的来源: 我们的这个队列里面是有9个位置的,我们知道这个队列…...

leecode377.组合总和IV

本题其实是多重背包问题,对于价值和重量都是nums[i]的的物品,求装满这个容量为4的背包共有多少种排列方式 如果是组合问题,那么遍历顺序是先物品后背包,这样能保证物品按从小到大顺序依次放置,对于实例1求出来为4&…...

变量与数据类型 - 整型、浮点型、字符型等

引言 在编程中,变量和数据类型是基础中的基础。理解它们如何工作以及如何正确使用它们对于编写高效且无误的代码至关重要。本文将详细介绍 C 中的几种基本数据类型:整型、浮点型、字符型等,并通过实例帮助读者更好地理解和掌握这些概念。 一…...

selenium学习笔记(二)

文章目录 前言设计模式POMPOM概念POM优势POM设计原则POM的实现 selenium的常用操作处理动态元素截图操作勾选复选框多层框架/窗口定位操作下拉框上传文件操作处理弹窗切换窗口拖拽操作 如何处理浏览器驱动更新导致的问题selenium与网站监控监听网页内容变化监控网络请求 seleni…...

vue和uniapp中,点击按钮 传递当前item对象,并从selectData数组中删除该条item数据

在 Vue 中,可以通过点击按钮传递 item 对象,并从 selectData 数组中删除该条数据。可以使用 Array.prototype.filter() 方法来实现这一点。以下是一个示例: 说明 数据结构:selectData 是一个包含多个对象的数组,每个对象都有 id 和 name 属性。渲染列表:使用 v-for 指令…...

双柱渐变图背景图

option {backgroundColor: #1b2735,tooltip: {//提示框组件trigger: axis,//触发类型 柱状图axisPointer:{type:shadow} //触发效果 移动上去 背景效果}, xAxis: [//x轴{type: category,//坐标轴类型 离散data: [1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月],//数据axisTick:f…...

OpenHarmony怎么修改DPI密度值?RK3566鸿蒙开发板演示

本文介绍在开源鸿蒙OpenHarmony系统下,修改DPI密度值的方法,触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新开源鸿蒙OpenHarmony5.0 Release系统,适…...

KylinOS V10 SP3下编译openGauss与dolphin插件

编译环境 KylinOS v10 sp3gcc 7.3.0make 4.3opengauss 5.0.0 mkdir -p /data/opengauss cd /data/opengauss git clone https://gitee.com/opengauss/openGauss-server.git git clone https://gitee.com/opengauss/Plugin.git wget -c https://opengauss.obs.cn-south-1.myhu…...

【入门】买杯子

描述 小明去商店买杯子,他想买价格在 10 到 20 元之间的杯子(含 10 元和 20 元),他看到货架上有 3 个不同价格的杯子,请问最终他买了几个杯子,总共花了多少钱? 比如:货架上有如下的…...

VIVO C++开发面试题及参考答案

面向过程与面向对象的区别,面向对象后的好处 面向过程编程主要关注的是程序的流程,它将一个问题分解为一系列的步骤,通过函数来实现这些步骤,数据和操作这些数据的函数是分离的。例如,在一个简单的计算学生成绩平均值的程序中,我们可能会有一些函数来输入成绩、计算总和、…...

虚拟化 | Proxmox VE 8.x 开源的虚拟化平台快速上手指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 简介说明 前言简述 描述:作为一个爱折腾的IT打工佬,时刻以学习各类新技术新知识为目标,这不正好有一台部署了VMware vSphere ESXi 虚拟化环境的服务器,由于正好安装其系统的磁盘有坏道,经常导致使用 ESXi 异…...

【原创学习笔记】近期项目中使用的西门子V20变频器总结(下篇)

上一篇我们简单介绍了下现场的变频器,现在我们来聊聊如何用手机控制变频器。 手机控制变频器的前提是变频器上必须安装智能模块,现场并为安装此模块,故不作考虑。 下面介绍一下如何实现手机或者电脑控制变频器 首先如果存在485通信&#x…...

idea 8年使用整理

文章目录 前言idea 8年使用整理1. 覆盖application配置2. 启动的时候设置编辑空间大小,并忽略最大空间3. 查询类的关系4. 查看这个方法的引用关系5. 查看方法的调用关系5.1. 查看被调用关系5.2. 查看调用关系 6. 方法分隔线7. 选择快捷键类型8. 代码预览插件9. JReb…...

Bluetooth Spec【0】蓝牙核心架构

蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议,以及一个公共服务层协议;服务发现协议(SDP)和总体配置文件要求在通用访问配置文件&a…...

PlantUML 入门使用指南

PlantUML 入门使用指南 一、PlantUML介绍二、PlantUML的用途三、PlantUML的语法及示例3.1 用例图(Use Case Diagram)3.2 类图(Class Diagram)3.3 对象图(Object Diagram)3.4 序列图(Sequence Di…...

QT:一个TCP客户端自动连接的测试模型

版本 1:没有取消按钮 测试效果: 缺陷: 无法手动停止 测试代码 CMakeLists.txt cmake_minimum_required(VERSION 3.19) project(AutoConnect LANGUAGES CXX)find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets Network)qt_standard_project_setup(…...

IOS safari 播放 mp4 遇到的坎儿

起因 事情的起因是调试 IOS 手机下播放服务器接口返回的 mp4 文件流失败。对于没调试过移动端和 Safari 的我来说着实费了些功夫,网上和AI也没有讲明白。好在最终大概理清楚了,在这里整理出来供有缘人参考。 问题 因为直接用 IOS 手机的浏览器打开页面…...

LLM常见面试题(26-30题)--langchain篇

26,什么是langchain? 一个局域语言模型的框架,用于构建聊天机器人、生成式回答、摘要等功能。 核心思想是将不同的组件“链”在一起,连接大语言模型和外部资源,以创建更高级的语言模型应用。使得开发人员可以快速开发原型系统和…...

【Python运维】构建基于Python的自动化运维平台:用Flask和Celery

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代IT运维中,自动化运维平台扮演着至关重要的角色,它能够显著提高运维效率,减少人为错误,并且增强系统的可维护性。本文将引导读者如…...

socket编程(C++/Windows)

相关文章推荐&#xff1a; Socket 编程基础 面试官&#xff0c;不要再问我三次握手和四次挥手 TCP的三次握手与四次挥手 参考视频&#xff1a; https://www.bilibili.com/video/BV1aW4y1w7Ui/?spm_id_from333.337.search-card.all.click TCP通信流程 服务端 #include<…...

Spring Boot介绍、入门案例、环境准备、POM文件解读

文章目录 1.Spring Boot(脚手架)2.微服务3.环境准备3.1创建SpringBoot项目3.2导入SpringBoot相关依赖3.3编写一个主程序&#xff1b;启动Spring Boot应用3.4编写相关的Controller、Service3.5运行主程序测试3.6简化部署 4.Hello World探究4.1POM文件4.1.1父项目4.1.2父项目的父…...

【hackmyvm】deba靶机wp

tags: HMVnodejs反序列化CVE-2017-5941wine命令定时任务 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描 3. nodejs反序列化 (CVE-2017-5941)4. www-data提权low用户5. 定时任务提权6. wine命令 提权root6.1. 利用CS获取root 靶机链接 http…...

新浪微博大数据面试题及参考答案(数据开发和数据分析)

介绍一下你所掌握的计算机网络和操作系统相关知识 计算机网络:计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。我掌握了网络协议…...

去除 el-input 输入框的边框(element-ui@2.15.13)

dgqdgqdeMac-mini spid-admin % yarn list --pattern element-ui yarn list v1.22.22 └─ element-ui2.15.13 ✨ Done in 0.23s.dgqdgqdeMac-mini spid-admin % yarn list vue yarn list v1.22.22 warning Filtering by arguments is deprecated. Please use the pattern opt…...

Qt 应用程序转换为服务

一、在 Windows 上将 Qt 应用程序转换为服务 方法1&#xff1a; 创建一个 Windows 服务应用程序&#xff1a; Windows 服务应用程序是一个没有用户界面的后台进程&#xff0c;通常由 Win32 Service 模板创建&#xff0c;或者直接编写 main() 函数以实现服务逻辑。 修改 Qt 应…...

C/C++ 数据结构与算法【树和森林】 树和森林 详细解析【日常学习,考研必备】带图+详细代码

一、树的存储结构 1&#xff09;双亲表示法实现&#xff1a; 定义结构数组存放树的结点&#xff0c;每个结点含两个域: 数据域&#xff1a;存放结点本身信息。双亲域&#xff1a;指示本结点的双亲结点在数组中的位置。 特点&#xff1a;找双亲简单&#xff0c;找孩子难 C语…...

潇洒郎:部署Dify, 安装Ollama,Ollama下载模型,Dify配置模型

Ollama 1、安装ollama Windows版本下载&#xff1a;2024WindowsOllama最新0.5.4版本资源-CSDN文库, 下载速度超快&#xff0c;官网太慢了 双击安装&#xff0c;安装成功后&#xff0c;托盘区有Ollama图标 右键View logs打开目录 C:\Users\Administrator\AppData\Local\Oll…...

如何在 Linux 中设置 SSH 免密码登录

一般情况下&#xff0c;我们通过一台 Linux 服务器远程另外一台服务器时&#xff0c;每次远程都需要输入对端机器的密码。 ssh root192.168.21.20 有没有这样一种情况&#xff0c;我们不用输入密码就可以远程别的服务器呢&#xff1f; 答案是肯定的&#xff0c;如果我们在 Li…...

网络安全词云图与技术浅谈

网络安全词云图与技术浅谈 一、网络安全词云图生成 为了直观地展示网络安全领域的关键术语&#xff0c;我们可以通过词云图&#xff08;Word Cloud&#xff09;的形式来呈现。词云图是一种数据可视化工具&#xff0c;它通过字体大小和颜色的差异来突出显示文本中出现频率较高…...

Linux | Ubuntu零基础安装学习cURL文件传输工具

目录 介绍 检查安装包 下载安装 手册 介绍 ‌cURL是一个利用URL语法在命令行下工作的文件传输工具&#xff0c;首次发行于1997年‌‌12。cURL支持多种协议&#xff0c;包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3…...

重启ubuntu服务器,如何让springboot服务自动运行

文章目录 1. 使用 systemd 服务步骤&#xff1a; 2. 使用 cron 的 reboot 任务步骤&#xff1a; 3. 使用 init.d 脚本&#xff08;适用于较旧版本&#xff09;步骤&#xff1a; 推荐方案 为了确保在重启Ubuntu服务器后&#xff0c;让springboot的服务test.jar象 nohup java -ja…...

MySQL 查询大偏移量(LIMIT)问题分析

大偏移量查询缓慢?LIMIT: 会进行两步操作 性能消耗在哪里了?OFFSET操作问题 2 LIMIT 操作 如何优化? 大偏移量查询缓慢? 示例:(假设age字段有索引) SELECT * FROM test WHERE age>18 LIMIT 10000000 ,10;分析MySQL的 LIMIT 10000000 , 10 LIMIT: 会进行两步操作 OFF…...

深入探究C++pow函数的优势和劣势 原理

优势 功能强大 支持多种数据类型&#xff1a; C 的pow()函数在<cmath>头文件中定义&#xff0c;它能够灵活地处理不同的数据类型。对于整数类型&#xff0c;如int、long long等&#xff0c;它能准确地计算幂次方。以计算棋盘上的麦粒数为例&#xff0c;传说国际象棋棋盘…...

Vue中动态样式绑定+CSS变量实现切换明暗主题功能——从入门到进阶

1.直接借助Vue的动态绑定样式绑定 Vue动态样式绑定 在Vue中&#xff0c;动态样式绑定是一种强大的功能&#xff0c;它允许开发者根据数据的变化动态地更新元素的样式。以下是对Vue动态样式绑定的详细知识梳理与详解&#xff1a; 一、基础知识 Vue的动态样式绑定主要通过v-b…...

Linux 硬盘扩容 分区 挂载

Linux 硬盘扩容 分区 & 挂载 1. 添加分区 1.1. 查看新添加的硬盘 fdisk -l假设当前未挂载的盘符是/dev/sdb&#xff0c;后文中所有操作都按挂载/dev/sdb 操作 1.2. 分区管理 小硬盘 fdisk /dev/sdb大硬盘&#xff08;2TB以上&#xff09; gdisk /dev/sdb1.3. 编辑分…...

Microsoft word@【标题样式】应用不生效(主要表现为在导航窗格不显示)

背景 随笔。Microsoft word 2013基础使用&#xff0c;仅做参考和积累。 问题 Microsoft word 2013&#xff0c;对段落标题文字应用【标题样式】不生效&#xff08;主要表现为在导航窗格不显示&#xff09;。 图1 图2 观察图1和图2&#xff0c;发现图1的文字在应用【标题一】样…...

react中实现拖拽排序

效果图&#xff1a;如下 效果说明&#xff1a; 1. 点击“选择”按钮&#xff0c;打开弹窗 2. 左侧数据是调接口回显来的 3. 点击左侧某条数据&#xff0c;这条被点击的数据就会被添加到右侧 4. 右侧的数据可以上下拖动换位置 5. 右侧有数据时&#xff0c;点击"确定"…...

云效流水线自动化部署web静态网站

云效流水线部署静态网站 背景新建流水线配置流水线运行流水线总结 背景 配置流水线以前&#xff0c;每次更新导航网站都要登进去宝塔后台&#xff0c;删掉旧的目录和文件&#xff0c;再上传最新的文件&#xff0c;太麻烦啦 网上的博客基本都是分享vue项目&#xff0c;这一篇是…...

【Docker命令】如何使用 `docker cp` 命令拷贝容器文件到宿主机

在使用 Docker 时&#xff0c;我们经常需要将容器内的文件或目录复制到宿主机上。下面是使用 docker cp 命令进行操作的简要指南。 步骤一&#xff1a;定位容器内文件或目录 首先&#xff0c;确定你想要从容器中拷贝的文件或目录路径。 步骤二&#xff1a;选择宿主机目标路径…...

leetcode hot 100 二叉搜索

35. 搜索插入位置 已解答 简单 相关标签 相关企业 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solut…...

WebRTC服务质量(09)- Pacer机制(01) 流程概述

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

MIGRATE_ISOLATE浅析

在linux内核的migratetype中&#xff0c;有MIGRATE_ISOLATE这样一个内存迁移类型&#xff0c;注释里写着can’t allocate from here&#xff0c;这个是怎么做到的呢&#xff1f;他又有什么作用呢&#xff1f; 本文分析基于linux4.19.195 可以看到内核里&#xff0c;是函数set_…...

[bug]java导出csv用Microsoft Office Excel打开乱码解决

[bug]java导出csv用Microsoft Office Excel打开乱码 ‍ 现象 首先这个csv文件用macbook自带的 "Numbers表格" 软件打开是不乱码的, 但是使用者是Windows系统,他的电脑没有"Numbers表格"工具, ​​ 他用Microsoft Office Excel打开之后出现乱码,如下图…...

Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道

一、专业数据摆渡系统对企业的意义 专业的数据摆渡系统对企业具有重要意义&#xff0c;主要体现在以下几个方面‌&#xff1a; 1、‌数据安全性‌&#xff1a;数据摆渡系统通过加密传输、访问控制和审计日志等功能&#xff0c;确保数据在传输和存储过程中的安全性。 2、‌高…...