机器视觉HALCON:3.图像获取,运算,率噪,滤波(边缘),锐化

news2024/9/24 5:26:07

目录

  • 图像获取
  • 生成单通道图像
  • 图像运算
    • 加法运算
    • 减法运算
    • 乘法运算
    • 除法
  • 仿射变换
  • 图像平滑(噪点处理)
    • 高斯滤波
    • 均值滤波
    • 中值滤波
    • 多图像均值
  • 边缘滤波
    • 索贝尔滤波
    • 凯尼滤波
  • 图像锐化
    • 索贝尔锐化
    • 拉普拉斯锐化
    • 高通滤波锐化
    • 几种锐化方式对比

图像获取

用到的函数:
1.读取目录
list_files( Directory, Options : Files)
Directory必须为一个目录
Files时读取到文件的变量
读出来就是目录数组:
在这里插入图片描述

2.筛选文件数组
tuple_regexp_select( Data, Expression : Selection)
Data为筛选的文件组
Expression为正则表达式
Selection为输出
3.读取图像
read_image( : Image : FileName : )
Image为读取后图像输出
FileName为图像文件名(就是文件的路径)
例子:
在这里插入图片描述
注意:如果read_image时报格式错误,就是读取的图片后缀格式和实际的格式不符合
也可以手动读取:
在这里插入图片描述
(拖拽也行)
也可以用图像采集助手:
在这里插入图片描述

生成单通道图像

*生成一张无灰度的图片,即纯黑图片
gen_image_const(Image, ‘byte’, 15, 15)
第一个参数:Image是生成的图像
第二个参数:Type是图像生成的类型,见下
第三个参数:Width宽
第四个参数:Height高
Type:

The operator gen_image_const creates an image of the indicated size. The width and height of the image are determined by Width and Height. HALCON supports the following image types:

'byte'
1 byte per pixel, unsigned

Value range: (0..255)

'int1'
1 byte per pixel, signed

Value range: (-128..127)

'uint2'
2 bytes per pixel, unsigned

Value range: (0..65535)

'int2'
2 bytes per pixel, signed

Value range: (-32768..32767)

'int4'
4 bytes per pixel, signed

Value range: (-2147483648..2147483647)

'int8'
8 bytes per pixel, signed (only available on 64 bit systems)

Value range: (-9223372036854775808..9223372036854775807)

'real'
4 bytes per pixel, floating point

Value range: (-3.4e38..3.4e38)

Precision: 6 significant decimal digits

'complex'
Two matrices of type 'real'

'vector_field_relative'
Two matrices of type 'real'

Interpretation: Vectors

'vector_field_absolute'
Two matrices of type 'real'

Interpretation: Absolute coordinates

'direction'
1 byte per pixel, unsigned

Value range: (0..179)

Interpretation: Angle divided by two

Attention: The values 180..254 are automatically set to the value 255, which is interpreted as undefined angle.

'cyclic'
1 byte per pixel, unsigned, cyclic arithmetics

Value range: (0..255)

With the operator set_system('init_new_image',<'true'/'false'>), it can be controlled whether the created image is initialized with 0 or not.

*生成一张灰度渐变图片
gen_image_gray_ramp(ImageGrayRamp, 20, 1, 128, 7, 7, 15, 15)
根据下面的公式创建一个渐变的图像:
ImageGrayRamp(r,c)=Alpha×(r-row)+Beta×(c-col)+平均值2
第一个参数:ImageGrayRamp是生成的图像
第二个参数:Alpha是Alpha的值,控制图像过度平滑度(分布),越小越平滑,灰度值也就越少.
第三个参数:Beta是Beta值,控制图像的倾斜
第四个参数:Mean是平均灰度值
第五个参数:Row是row值
第六个参数:Column是Column值
第七个参数:Width宽
第八个参数:Height高

*生成一张有灰度的图像(单通道)
gen_image_proto(ImageGrayRamp, ImageCleared, 128)
第一个参数:Image是输出图像的尺寸和这个图像相同
第二个参数:ImageCleared是生成的图像
第三个参数:Grayval是图像的常量灰度值

*设置图像某点灰度值,ramp的意思是灰度渐变图像(还是单通道)
set_grayval(ImageGrayRamp, 7, 7, 255)
第一个参数:Image是输入需要设置的图像
第二个参数:Row是需要改变灰度的y坐标
第三个参数:Column是需要改变灰度的x坐标
第四个参数:Grayval是修改后的灰度值
请添加图片描述

图像运算

注意:运算一般需要图像的大小通道数一致

加法运算

对于单通道:图像的加法运算是将两幅图片的灰度值进行相加:g’ := (g1 + g2) * Mult + Add
add_image (ImageA, ImageB, ImageAdd, Mult , Add)
第1个参数:ImageA是加数
第2个参数:ImageB是加数
第3个参数:ImageAdd结果图像
第4个参数:Mult是Mult值
第5个参数:Add是Add值

例子:

list_files('C:/Users/24774/Desktop/新建文件夹/',['files'],ImageFiles)
tuple_regexp_select(ImageFiles,['\\.(jpg|png|jpeg)$', 'ignore_case'],ImageFiles)
*\\转义字符,(|)选择,ignore_case忽略大小写
*生成单通道纯黑图像
gen_image_const (ImageAdd, 'byte', 1000, 600)
*生成三个指定灰度的单通道图像,大小和ImageAdd相同
gen_image_proto(ImageAdd, ImageA, 0)
gen_image_proto(ImageAdd, ImageB, 0)
gen_image_proto(ImageAdd, ImageC, 0)
*合并通道,生成三通道彩色图片,RGB
compose3(ImageA, ImageB, ImageC, ImageAdd)

for Index:=0 to |ImageFiles| - 1 by 1
    read_image(Image,ImageFiles[Index])
    *裁剪图像保证图像大小一致
    crop_part (Image, ImagePart, 0, 0, 1000, 600)
    *0.5对应值越大越清除但是重叠图像越亮,10对应值越大重叠的部分越和谐,但是越模糊
    add_image (ImageAdd, ImagePart, ImageAdd, 0.3, 100)
endfor

减法运算

可以用于找两张图片的不同
对于单通道:图像的减法运算是将两幅图片的灰度值进行相减:g’ := (g1 - g2) * Mult + Add
sub_image(ImageMinuend, ImageSubtrahend, ImageSub, Mult, Add)
第1个参数:ImageMinuend是被减数图像
第2个参数:ImageSubtrahend是减数图像
第3个参数:ImageSub结果图像
第4个参数:Mult是Mult值
第5个参数:Add是Add值

乘法运算

单通道图像中,乘法会把灰度值相乘
例子:

read_image (ImageA, 'C:/Users/24774/Desktop/新建文件夹/1716282654639.jpg')
rgb1_to_gray(ImageA,GrayImage)
gen_image_proto(ImageA, ImageB, 0)

*生成一个矩形区域
gen_rectangle1(Rectangle, 112, 412, 312, 832)
*区域绘制到图像上'fill'为整个,'margin'为边缘,paint_region只接受单通道图像,多通道请拆分画完合并
paint_region (Rectangle, ImageB, ImageB, 255, 'fill')
*乘法,灰度值相乘g' := g1 * g2 * Mult + Add,1.0哟不然1/255=0,g1 * g2 * Mult超过255会全白
mult_image (ImageB, GrayImage, ImageMult, 1.0/255, 0)

除法

触发可以进行图像的亮度矫正。比如流水线上每天亮度不一样,对图像就有影响,我们可以通过触发减小这种影响,就叫亮度矫正
div_image(ImageConverted1, ImageConverted2, Result, 1, 0)
公式:g’ := g1 / g2 * Mult + Add
第一个参数:ImageConverted1为被除数
第二个参数:ImageConverted2为除数
第三个参数:Result为结果
第4个参数:Mult是Mult值
第5个参数:Add是Add值

仿射变换

先生成一个对角矩阵
对对角矩阵进行变换
通过对角矩阵对图像进行变换(矩阵相乘)

函数只说两个,其他的看例子很简单。

affine_trans_image(Image, ImageAffineTrans. HomMat2D, Interpolation, AdaptImageSize)
第一个参数:Image是被变换的图像
第二个参数:ImageAffineTrans是变换后的图像
第三个参数:HomMat2D是变换矩阵,就是按照这个矩阵变换
第四个参数:Interpolation是变换方法
nearest_neighbor
最近邻插值:灰度值由最近像素的灰度值确定(可能质量低,速度非常快)。
bilinear
双线性插值。灰度值是通过双线性插值从四个最近的像素确定的。如果仿射变换包含比例因子 < 1 的缩放,则不执行平滑,这可能会导致严重的锯齿效应(中等质量和运行时间)。
bicubic
双三次插值。灰度值是通过双三次插值从最近的像素确定的。如果仿射变换包含比例因子 < 1 的缩放,则不执行平滑,这可能会导致严重的锯齿效应(放大质量高,速度慢)。
constant
双线性插值。灰度值是通过双线性插值从四个最近的像素确定的。如果仿射变换包含比例因子 < 1 的缩放,则使用一种均值滤波器来防止混叠效应(中等质量和运行时间)。
weighted
双线性插值。灰度值是通过双线性插值从四个最近的像素确定的。如果仿射变换包含比例因子 < 1 的缩放,则使用一种高斯滤波器来防止混叠效应(高质量,慢)。
第五个参数:AdaptImageSize是对齐方式,false是左上角对齐,true是右下角对齐

*倾斜变换矩阵
hom_mat2d_slant( HomMat2D, Theta, Axis, Px, Py, HomMat2DSlant)
第一个参数:HomMat2D是待变换矩阵
第二个参数:Theta是倾斜度 0 ≤ Theta ≤ 6.28318530718
第三个参数:Axis是按什么坐标倾斜 ‘x’, ‘y’
第四个参数:Px变换的固定点(x 坐标)
第五个参数:Py变换的固定点(y 坐标)
第六个参数:HomMat2DSlant是变换后的矩阵

read_image (Image, 'C:/Users/24774/Desktop/新建文件夹/1716282654639.jpg')

*生成对角矩阵
hom_mat2d_identity (HomMat2DIdentity)
*左上角xy平移300
hom_mat2d_translate (HomMat2DIdentity, 300, 300, HomMat2DTranslate)

*平移仿射
affine_trans_image (Image, ImageAffineTrans, HomMat2DTranslate, 'constant', 'false')


*比例变换矩阵,0,0点为基准放大两倍
hom_mat2d_scale (HomMat2DIdentity, 2, 2, 0, 0, HomMat2DScale)
*比例变换仿射
affine_trans_image (Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')

*旋转矩阵
hom_mat2d_rotate (HomMat2DIdentity, 0.78, 300, 300, HomMat2DRotate)
*旋转仿射
affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

*倾斜变换矩阵
hom_mat2d_slant (HomMat2DIdentity, 1, 'y', 2, 2, HomMat2DSlant)
*倾斜变换仿射
affine_trans_image (Image, ImageAffineTrans, HomMat2DSlant, 'constant', 'false')

图像平滑(噪点处理)

用于减少图像中的噪声和细节,从而使图像看起来更平滑和更柔和。其主要目的是去除图像中的高频成分(例如噪声和细小的纹理),同时保留低频成分(例如大的结构和边缘)。这在许多应用中非常有用,例如减少相机传感器产生的噪声、降低图像中的细节以便于进一步处理(如边缘检测)或增强图像的视觉效果。

1) 高斯噪声
即图像信号的噪声符合高斯分布,属于白噪音的一种。
在这里插入图片描述
根据噪声分布的不同还有泊松分布等
2)白噪声
白噪声是一种统计特性均匀的噪声,其频率成分在整个频谱范围内是均匀分布的。如果一幅图像受到白噪声的影响,每个像素的灰度值可能会被随机地增加或减少,具体变化量遵循某个概率分布(例如,高斯分布)。

与椒盐噪声的区别是分布均匀(颜色不是均匀的,可能按照某种分布),颜色不止极黑极白。
3)椒盐噪声
就像老电视的‘雪花’,椒盐噪声(salt-and-pepper noise)又称脉冲噪声,它随机改变一些像素值,在二值图像上表现为使一些像素点变白,一些像素点变黑。 是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。(即只有黑白点)
在这里插入图片描述

高斯滤波

适用于消除高斯噪音。
在这里插入图片描述
gauss_filter(Image, ImageGauss, Size)
Size值有:
3 (0.600)
5 (1.075)
7 (1.550)
9 (2.025)
11 (2.550)

均值滤波

mean_image(Image, ImageMean,MaskWidth, MaskHeight)
第一个参数:Image是需要滤波的图像
第二个参数:ImageMean是输出图像
第三个参数:MaskWidth是掩膜宽度
第四个参数:MaskHeight是掩膜高度

中值滤波

median_image(Image, ImageMedian, MaskType, Radius, Margin)
第一个参数:Image是需要滤波的图像
第二个参数:ImageMedian是输出图像
第三个参数:MaskType是掩膜方式,有’circle’, ‘square’
第四个参数:Radius是掩膜半径 1 ≤ Radius ≤ 4095
第五个参数:Margin是边界处理方式,建议值:‘mirrored’, ‘cyclic’, ‘continued’, 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

多图像均值

一般是将多张相同的灰度图像滤波
mean_n(Image, ImageMean)
第一个参数:Image是需要运算的多通道灰度图像
第二个参数:ImageMean为运算后的图像

Image需要使用append_channel将多个图像的通道全部添加到一个图像
比如MotionImage和Image灰度图像是单通道,append_channel(MotionImages, Image, MotionImage)运行后MotionImage为2通道灰度图像。

*多图像均值滤波
NumImage := 3
for Index := 0 to NumImage - 1 by 1
    p := 'C:/Users/24774/Desktop/新建文件夹/' + Index$ '02d'
    *格式化Index$ '02d'会变为前面没有字符串会编程Index00,Index01这种。有的话是前面字符串拼接上000102
    read_image (Image,'C:/Users/24774/Desktop/新建文件夹/' + Index$ '02d')
    crop_part (Image, ImagePart, 0, 0, 400, 400)
    if (Index == 0)
        copy_obj (ImagePart, MotionImage, 1, 1)
    else
        *多个图片加入对应通道,即合并图片
        append_channel (MotionImage, ImagePart, MotionImage)
    endif
endfor
*求通道平均
mean_n (MotionImage, ImageMean)

边缘滤波

即过滤边缘,突出边缘。
斜坡边缘比较常见
请添加图片描述

索贝尔滤波

索贝尔(Sobel)算子是一个离散微分算子, 即使用倒数表示边缘像素变化的趋势。
图像是一个二维矩阵,所以将到数分为了x,y两个方向。
SOBEL_AMP计算图像的一阶导数,并用作边缘检测器。该滤镜基于以下滤镜掩码(即x方向和y方向倒数矩阵):
在这里插入图片描述
再使用卷积:

sobel_amp(Image, EdgeAmplitude, FilterType, Size)
第一个参数是:Image是待边缘滤波图像
第二个参数是:EdgeAmplitude是输出图像
第三个参数是:FilterType是计算方式:
在这里插入图片描述

第四个参数是:Size是掩膜大小

凯尼滤波

(1)应用高斯滤波来平滑图像:降噪
(2)获取图像的梯度信息:在获取图像的强度信息的同时,使用的是索贝尔算子来获取图像的梯度,计算方式是sum_sqrt,把y方向的求导值a和x方向的求导值b的平方和开根号,并除以4。通过这个方式求取出梯度图像。
(3)应用非最大抑制技术来消除边误检:最大抑制技术和在索贝尔算子里面介绍的thin函数相同,即在沿边缘方向中如果中心值最大,则保留这个值,否则该中心点置为0;通过这个方法,生成边缘图像。
(4)应用双阈值的方法来决定可能的边界:经过非极大抑制后的图像中仍然有很多噪声点。凯尼算法中应用了一种双阈值的技术。即设定一个阈值上界和阈值下界,通常由人为指定,图像中的像素点如果大于阈值上界则认为必然是边界,称为强边界;小于阈值下界则认为必然不是边界;两者之间的则认为是候选项,称为弱边界,弱边界需进行进一步处理。双阈值方法是凯尼算子的核心思路。
(5)利用滞后技术来跟踪边界。
滞后技术指的是和强边界八连通相连的弱边界认为是边界,其他的弱边界则被舍弃。
通过这5个步骤就获得了凯尼滤波的边界。

凯尼算子在边缘提取时,不会丢失重要的边缘,也不容易把噪声提取成边缘。抗噪声能力强,而且可以比较好地检测到较弱的背景边缘。凯尼算法对于不同分辨率的图像,不需要调节参数,可以统一进行检测,鲁棒性比较好。一般情况下,提取到的边缘和实际的边缘偏差很小,而且偏差一致。但是对于要精准求取边界的场景来说,偏差还是存在的。
在HALCON中使用edges_image函数来实现凯尼滤波,这个函数的参数中
edges_image(Image, ImaAmp, ImaDir, Filter, Alpha, NMS, Low, High)
第一个参数是:Image是待边缘滤波图像
第二个参数是:ImaAmp是边缘滤波的结果图像
第三个参数是:ImaDir是方向滤波的结果图像
第四个参数是:Filter是滤波方式
第五个参数是:Alpha是Alpha值, 在凯尼滤波中,Alpha值影响高斯滤波器的标准差,Alpha值越大图像越平滑
第六个参数是:NMS是非最大抑制类型,非极大值抑制就是掩膜大小是3,那么3x3矩阵中如果中心是极大值则全部3x3全部设为极大值,否则为0。
第七个参数是:Low是凯尼滤波双阈值的低阈值
第八个参数是:High是凯尼滤波双阈值的高阈值
如图6-27所示是素贝尔滤波和凯尼滤波的边缘滤波对比图,图6-28所示是原始图像。可以看到,凯尼滤波边缘的均一性更好,边缘的波动更小,这得益于非最大值抑制的效果。索贝尔滤波是根据相邻灰度数值计算出主体边缘,凯尼滤波是通过非最大值抑制获得的边缘,在噪声上索贝尔滤波会把一些噪声捕获为边缘,而凯尼滤波得益于高斯滤波,有效抑制了噪声。在运行时间方面,凯尼滤波的运算时间会比较长,大概是索贝尔滤波的5倍以上。
请添加图片描述

图像锐化

即补偿边缘,提高边缘高频信息,但是噪声也属于高频信息,所以锐化也会放大图像噪声。图像清晰用于增加图像的边缘的过度梯度,使得图像边缘锐利,不再平滑。

索贝尔锐化

索贝尔锐化是通过索贝尔滤波获取图像边缘,以边缘为界限获取到图像的非主边缘,同时消除非主边缘,达到锐化效果。
没有特点的函数,需要手动操作,比较复杂,这里暂时不做阐述

拉普拉斯锐化

依赖图像的变换程度(二阶导数)
laplace(Image, ImageLaplace, ResultType, MaskSize, FilterMask)
第一个参数:Image是需要变换的图像
第二个参数:ImageLaplace是变换后的图像
第三个参数:ResultType是结果图像的类型
ResultType分为六种类型:
(1)第一种absolute代表输出图像是绝对值数值,使用的是高斯滤波进行平滑。
(2)第二种signed_clipped代表带符号的输出图像深度与输入图像深度相同,使用的是
高斯滤波进行平滑。
(3)第三种 signed 代表输出图像是带正负符号的,且输出图像类型的深度比输入图像
大,使用的是高斯滤波进行平滑。
(4)第四种absolute_binomial代表使用二项式滤波进行平滑,输出图像是绝对值数值(5)第五种signed_clipped_binomial代表输出图像是带正负符号的,且输出图像深度与输入图像深度相同,使用的是二项式滤波进行平滑。
(6)第六种signed_binomial代表输出图像是带正负符号的,且输出图像类型的深度比
输入图像大,使用的是二项式滤波进行平滑。
FilterMask的掩膜有三种形式:
(1)第一种n_4对应于四邻域的二阶微分;
第四个参数:MaskSize是掩膜的尺寸
第五个参数:FilterMask是掩膜的类型
拉普拉斯提供了矩阵,以计算每个像素处的二阶微分
在这里插入图片描述
laplace的结果是模糊边缘(非主边缘,因为),还需要用原图像减去模糊边缘才能得到锐化后的图像:

ImageLaplace:在这里插入图片描述
例如:

laplace (Image, ImageLaplace, 'absolute', 3, 'n_4')
sub_image (Image, ImageLaplace, ImageSub, 1, 0)

但是减法得考虑溢出,即相减时某个值大于255了,所以先将图像转化为int2再相减后转化回来

laplace (Image, ImageLaplace, 'absolute', 3, 'n_4')
convert_image_type(Image, ImageConverted, 'int2')
sub_image (ImageConverted, ImageLaplace, ImageSub, 1, 0)
convert_image_type(ImageConverted, ImageConvertedByte, 'byte')

高通滤波锐化

高通滤波让高频正常通过,而低于设置临界值的低频信号则被阻断、减弱。
highpass_image(Image, Highpass, Width, Height)高通滤波函数
Width,Height表示掩膜大小
获取到高频(主边缘),与原图像相加从而锐化(与拉普拉斯锐化不一样)
使用highpass_image需手动转化类型并相加。

halcon也直接提供了高通滤波函数emphasize(Image, ImageEmphasize, MaskWidth, MaskHeight, Factor)
Factor是用于控制图像边界对比度强度。越大对比度越强

几种锐化方式对比

对于不太锐利的边缘,复杂的边缘,索贝尔锐化的涂抹感比较强。高通滤波比较好。拉普拉斯一般。
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学历提升青岛理工大学计算机网络技术试题及答案,分享几个实用搜题和学习工具 #媒体#媒体#知识分享

在大学的学习过程中&#xff0c;我们常常会遇到一些难以解决的问题&#xff0c;有时候甚至会感到束手无策。然而&#xff0c;如今的技术发展给我们提供了新的解决方案。搜题软件作为一种强大的学习工具&#xff0c;正在被越来越多的大学生所接受和使用。今天&#xff0c;我将为…

男士内裤什么品牌质量好?男内裤品牌排行榜汇总

大家都知道&#xff0c;为了私处健康&#xff0c;每天都必须换内裤。而且&#xff0c;使用频率较高的内裤最好 3&#xff5e;6 个月换一批&#xff0c;一旦变形、材质变干硬或污渍洗不净&#xff0c;就得及时扔&#xff01;但有一说一&#xff0c;现在男性同胞们想挑选到合适自…

LED便携小型充气泵方案设计

当前推出的车载充气泵设计方案&#xff0c;是针对汽车轮胎充气及胎压监测等多功能于一体的PCBA方案。此方案不仅具备高精度的控制和测量能力&#xff0c;还采用了高集成度的芯片设计&#xff0c;支持三种压力单位的转换&#xff0c;并能适应多种类型产品的充气需求。以下是关于…

【NumPy】掌握NumPy的divide函数:执行高效的数组除法操作

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

编译安装Apache httpd服务

目录 1.初始化设置&#xff0c;将Apache所需软件包传到 /opt 目录下 &#xff08;1&#xff09;关闭防火墙 &#xff08;2&#xff09;上传软件包到/opt目录 2.安装环境依赖包 3.配置软件模块 4.编译及安装 5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文件…

FLUKE福禄克DSX-5000或者DSX-8000如何做外部串扰测试之实践篇

近期&#xff0c;有很多朋友问如何使用DSX5000或者DSX8000测外部串扰&#xff1f; 外部串扰测试在判定外部线缆是否对网络传输造成影响的重要一环。 直接上干货&#xff0c;测试步骤如下&#xff1a; 第一步:对主机和副机进行基准设置&#xff0c;保持同步!官方是建议每24小时…

oracle 12c DB卸载流程

1.运行卸载程序 [rootprimary1 ~]# su - oracle [oracleprimary1 ~]$ cd $ORACLE_HOME/deinstall [oracleprimary1 deinstall]$ ./deinstall Checking for required files and bootstrapping ... Please wait ... 这里选择3 、回车、y、y、回车、ASM 这里输入y 2.删除相关目录…

电商API接口可实现的功能(京东API接口|天猫API接口)

电商API接口是电子商务领域中一种技术解决方案&#xff0c;它允许不同的软件系统之间进行交互和数据交换。 在电商场景下&#xff0c;电商API接口可以实现的功能非常丰富&#xff0c;例如&#xff1a; 商品管理&#xff1a;获取商品列表、商品详情、搜索商品、上下架商品等&a…

QT 使用QLsitView 实现多个子项选中取消效果

文章目录 效果图概述部分代码总结 效果图 概述 整个界面的布局介绍请看这篇博客想要的到这种自由选择中的Item效果&#xff0c;需要使用到Model-view的思想&#xff0c;每个item中都要存放一个标志位&#xff0c;用在Paint函数去判断是否绘制为按下的状态。每次item被点击时&a…

作为一名前端工程师,该如何控制高并发请求呢?「如果有更好的方案,欢迎讨论」

假如现在有几十、上百个请求&#xff0c;我们该如何去控制这么高的并发呢&#xff1f; 给你一分钟时间&#xff0c;稍作思考 &#xff5e; &#x1f914; 此场景有很多&#xff0c;比如 图片或文件批量下载、RSSHub高速抓取内容。。。 第一想法是不是请求池&#xff01;&…

【LaTex】11 ACM参考文献顺序引用 - 解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题

【LaTex】11 ACM参考文献顺序引用 写在最前面解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题问题描述问题原因如何解决问题解决方案1&#xff08;更简单&#xff09;解决方案2&#xff08;更自由&#xff09; 小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 …

AutoDL搭建 ChatGLM3

租用新实例 这里选择的西北 B 区、RTX 409024GB 创建虚拟环境并激活 # 安装虚拟环境至数据盘 conda create --prefix /root/autodl-tmp/envs/chatglm3-demo python3.10# 激活虚拟环境 conda activate /root/autodl-tmp/envs/chatglm3-demo拉取ChatGLM3仓库代码 # 开启学术…

科学提效|AI融入零售业,未来零售的创新之旅

零售业正经历着由人工智能&#xff08;AI&#xff09;引领的转型浪潮。AI在零售和消费品&#xff08;CPG&#xff09;行业的应用前景广阔&#xff0c;它正以多种创新方式重塑行业的运作模式。且随着技术的不断进步&#xff0c;AI在零售业的应用将变得更加广泛和深入。AI不仅能够…

聊天宝使用技巧揭秘让您快捷回复效率翻倍

聊天宝快捷回复软件&#xff0c;推出大量实用工具&#xff0c;帮助客服能更加高效的实现快捷发送&#xff0c;一键发送&#xff0c;效果翻倍&#xff01; ​ 前言 聊天宝作为一款快捷回复工具&#xff0c;让客服免去了打字回复之苦。所以很受广大客服欢迎&#xff0c;真是一旦…

数控六面钻选购指南:如何挑选一款高效、精准的加工利器?

在木工家具、门窗制造等行业中&#xff0c;数控六面钻凭借其高效、精准的特点&#xff0c;逐渐成为现代生产线上的必备设备。然而&#xff0c;市场上的数控六面钻品牌众多&#xff0c;性能各异&#xff0c;如何选购一款适合自己的设备呢&#xff1f;本文将为您提供一份实用的选…

aws lakeformation工作流程和权限管理逻辑

lakeformation在IAM权限模型之外提供独立的更细粒度的权限&#xff0c;控制数据湖数据的访问 能够提供列、行和单元格级别的精细控制 lakeformation的目的是要取代s3和iam策略&#xff0c;主要功能为 数据摄入&#xff0c;LF可以将不同类型的数据统一管理安全管理&#xff0…

前端面试问题:子组件的某一个方法调用执行逻辑由父组件的属性状态变化来决定

面试官&#xff1a;请你讲讲你在该项目中遇到的问题是什么&#xff1f;你怎么解决这个问题&#xff1f; 答&#xff1a;我的回答&#xff1a;该项目的实现过程中我确实遇到了问题&#xff1a;【我会给大家整理回答思路和角度&#xff0c;那那么遇到这样的问题也可借鉴这种思路…

B站pink老师CSS学习(一)

文章目录 一、CSS基础选择器1.标签选择器2.类选择器3. id选择器4.通配符选择器 二、字体属性1.字体2.字体大小3.字体粗细4.文字样式5.复合属性 三、文本属性1.文本颜色2.对齐文本3.装饰文本4.文本缩进5.行间距 四、CSS引入方式1. 内部样式表2.行内样式表3.外部样式表 一、CSS基…

uni微信小程序input框过滤中文字节以及规定以外的符号

问题描述 需求是输入账号只能为手机号、邮箱、字母和数字组成的字符串&#xff0c;那么就是所有大小写字母、数字、以及符号 - _ . 四种。 条件限制 微信小程序无法直接通过type属性实现&#xff0c;type属性中没有专门为只允许英文字母的输入类型。详情见input | uni-ap…

服务器上创建搭建gitlab

一、下载与安装 在主目录操作~ 1.使用wget下载 wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.1-ce.0.el7.x86_64.rpm 可以在开源软件镜像站选择合适的版本&#xff0c;版本不同页面菜单会稍有差异&#xff0c;此次选…