基于MATLAB的静态手势识别系统(猪脑子进化了)

原创 云深之无迹 2023-03-25 22:35

给大家展示一下如何使用ChatGPT和一个优秀的猪脑子写一篇论文。别问为什么是这个题目,问就是金主爸爸说的。

因为这个文章在最后会被直接使用,这里就把文章的水印功能先关闭。

这个算一个简单的视觉项目,为了UI界面编写的易用性(主要是我就会用ML写)和金主爸爸的要求。

本来按照我平时的路数是要多看几篇好文章动手的,但是时间紧迫,就先一把梭哈了,不看了!

图像处理的话,这个的难点在识别,其实前面的部分叫计算机视觉,后面的部分叫机器视觉,不过很多人也不分。

识别部分主要是传统的方案和现代的神经网络方案,这次选用前者,使用图像的矩特征来分类。

对我而言,视觉就是堆积木,是标准的流程,是共识。

这个是这次大致的项目流程

整个流程就是预处理,中解算,后特征提取和匹配,为了更好的说明算法的有用性,这里也使用了UI的工具,显得更加的牛逼。

直接说干货不太好,说点废话!

人机交互技术也得到了快速发展;人机交5(Human-ComputerInteraction,HCI)是人类与电脑、机器之间的信息交换和交互的技术,是人类和电脑之间的一种桥梁。人类与人之间的互动从世界上首部电脑 ENIAC诞生以来,为了让人类更好地使用电脑,更有效地处理资讯,人类开始寻求更好的方法来进行人机互动。1964年,随着鼠标的产生,出现了图形用户界面(GraphicalUserInterface,GUI),键盘的诞生又将人机交互的方式推入到字符用户界面时代;随着笔式交互、触摸、语音及基于视频等自然交互设备的出现,人机交互进入了普适计算(PervasiveComputing)时代,自然交互是其研究的重要主题,自然人机交互技术是指能够利用人类自然地认知、感知能力和人类行为习惯的方法。

简而言之,言而总之,这就是个人机交互的好东西~

我们知道论文的前半部分的最后是要给出你研究课题的研究目标的,这个适合使用ChatGPT是最好的!

舒服了

但是我们没有使用神经网络算法,所以需要继续调教:

还是可以看到一些关键字

这样就好很多了

但是鄙人有点完美主义,我们重新的来调整:

到目前为止,这个就很好了

对大语言模型来说,前面的内容应该尽量的偏大框架,后面的调整先做减法,再做加法。

全程使用的软件就是ML2022A,现在有2023了,对TI的C2000有大支持,其实对我来说也然并卵。

我这里使用的版本是2022

打开ML,设计APP

我以前有个UI的,直接使用但是后面ML的UI工具更新了,这里直接转换

开启这个对齐功能

放大这些边边角角

全部对齐

多用空格按键,平移整个框图

包括按钮也是一样的

然后这里也会对外观这些可以进行细微的调节

图像显示框要全部搞到容器里面

右面是整个的组件树

其实在UI系统里面,触发和回调就是全部,触发简单,就是什么事情发生了,接着就是回调,一般意思是把函数当参数传递,但是更加广义的回调应该是有点中断的味道,就是触发了一个实体以后发生了什么,回调本身其实就是发生了什么。

所以按钮和回调进行一个绑定,就是摁下按钮以后会怎么样?

我们的论文基于此,说明了所有的回调函数,就完成了所有的工作。

注意要看会响应什么类型的回调

这里就是回调的值

多说无益上代码

这个函数就是实现了最装B的部分,实时的在一个框里面输出视频流。

再看,我们处理的是一帧图像:

可以使用这个函数,获取几帧图像

默认是10,double

然后图像可以使用多种格式储存,我这里设置为RGB,其实YCbCr才好

set(H,Name,Value) 为 H 标识的对象指定其 Name 属性的值。使用时须用单引号将属性名引起来,例如,set(H,'Color','red')。如果 H 是对象的向量,则 set 会为所有对象设置属性。如果 H 为空(即 []),set 不执行任何操作,但不返回错误或警告。

把图像送到坐标区域,就是上面的窗口

不难吧?    

上面这些操作只是说先显示了一帧而已,接下来是更多的图像。

先查询视频流的分辨率

接着要给出颜色的空间

接着按照实际的分辨率来把图像生成

直接显示

其实别觉得难,程序就是关注数据和状态罢了,数据在你手中被重构。

ML的优点就在于帮助文档太好了

这个是没有修改前

修改后

第二个函数就更简单了,从视频流里面获取一帧

重点看最好一个函数,倒数第二个函数其实已经完成了使命,但是我们后面处理的数据从哪里来?就是这个函数,图像存到pic这个东西里面。

事实上,我还搞了一个可以读取已经有的图片的功能。

代码也是简单的一笔:

看见了没有,pic就是我们要处理的最终图像,读出来的图像进行缩放,为了提高计算效率,然后在第二个图床上面显示。

接着就是我们要把图像分割出来,事实上我们需要很多的理论知识说明这些,但是好在matlab帮我们都封装好了。

完成一个任务是有不同的算法的选择,我们可以使用下拉框来完成。

就像这样

值必须要是下面items里面的

我们使用的就是这个

直接拿到上面传到的图像,下面是取出下来列表的值

如果是阈值分割算法,先转灰度,接着就是局部增强,这个函数不是内置的,需要自己来写:

图像增强(Image Enhancement)其实是一个很宽泛的定义,简单来说就是对数字图像进行调整(adjusting)以使图像更适合于显示或后期的图像分析。

图像增强的原因总结有以下几点:

(1)图像细节不清晰

(2)光照不均匀导致图像亮度分布不均匀

(3)图像对比度较差

(4)成像过程中原始图像受噪声污染

(5)感兴趣区域(Region of Interest)不明显

(6)人眼视觉特性

对于现在有的增强方法是从空间域和变换域说的:


变换方法分类

在图像的小区域细节中,像素数在全局变换的计算中可能被忽略,因为它们没有必要确保局部增强。解决的办法就是在图像中每一个像素的邻域中,根据灰度级分布(或者其他特性)设计变换函数。

以前描述的直方图处理技术很容易适应局部增强,该过程定义一个方形或矩形的邻域并把该区域的中心从一像素移至另一像素。在每个位置的邻域中该点的直方图都要被计算,并且得到的不是直方图均衡化就是规定化变换函数。这个函数最终被用来映射邻域中心像素的灰度。相邻区域的中心然后被移至相邻像素位置并重复这个处理过程。当对某区域进行逐像素转移时,由于只有邻域中新的一行或一列改变,所以可以在每一步移动中,以新数据更新前一个位置获得的直方图。这种方法相比邻域每移动一个像素就对基于所有像素的直方图进行计算,有明显的优点。有时使用非重叠区域是减少计算量的另一种方法。但是这种方法通常会出现不希望的棋盘效果。

分别是源相,全局均衡化,7x7邻域均衡化

这里使用利用直方图统计量来增强局部图像,所以用的原理公式详见冈萨雷斯《数字图像处理》第四版。

公式的意思是定义一个3x3的领域,平均局部灰度和局部标准差在一定的范围内时,像素乘上C,来增强图像下部分的灰度值,否则就不变。

下面是知乎老哥的,直接梭哈了!

首先我们要将对比度低区域找出来,怎么找呢?我们需要一个比较!我们知道方差体现了一个区域内数值的差距大小,若该区域亮度值相等,则方差为0,而对比度较低区域的方差通常也很小。我们用前面设置的3x3邻域遍历整张图片的每一个像素值,每一次都求一次方差和均值。

注:红色框是左上角方块中隐藏图案;黄色框是该邻域未接近隐藏图案;蓝色框是邻域进入隐藏图案
我们先算出红色框的均值和标准差分别为:35.4,5.5。再算出蓝色框的均值和方差:39.9,4.4。随着邻域进入隐藏图案,方差也会越来越小,我们是否可以用刚进入邻域的方差作为一个阈值呢?只有当该点(c,d)邻域方差小于这个阈值时,我们才提高该点(c,d)的亮度。因此我们k3,即方差最大值可以选择(4.4/原图标准差)。因此,在我们进行遍历的时候,均值在进入区域也会变大。如果方差小于k3时,我们就要将该点像素提高。如何提高呢?这就是系数C的作用了。k2的取值通常为0,因为因此图案中也有方差为0的地方。
系数C的定义就是(max(原图) / max(邻域)),目的就是提高对比度低区域(隐藏图案)的亮度。假设原图最高亮度是200,该邻域最高亮度为20,则200/20=10,我们乘10后,隐藏图案该像素值就会变亮,但不会超过全图最高亮度。
这样我们能够找到对比度较低的地方并处理,但是均值是干嘛的呢?

左边对应原图中的白色区域,右图对应原图黑色区域

我们可以看到无论白色还是黑色区域,区域内亮度值基本相同,如果用方差判断的话他们也会被认定为低对比度区域。但是我们通过求两部分均值:230,32。再跟前面的均值对比,发现不是比目标区域的低就是高。因此我们可以通过均值大小来更加精准的来判断是否为隐藏图像区域。只有均值和方差均满足条件时,才提高亮度。那么k1上线应该选择(隐藏区域最大均值/原图均值)。下限k0通常选择(隐藏区域边界最小均值/原图均值)。这样我们就过滤了黑色和白色区域。
通过上述公式,遍历整张图片,仅改变隐藏图案亮度,我们就会得到处理后的图片。

我们传入的就是一个图像,E就是上面说的增强系数C,平均值什么的直接就计算了。

整个判断过程

真实对图像起作用的地方

接着再滤波,其实这里我觉得是没有必要的,因为增强了再滤波信息又没了

不过为了堆算法就再处理一下,如果是搞项目,整个是不可取的,这不二逼行为么、、、

中值滤波是一种平滑技术,与线性高斯滤波一样。所有的平滑技术都能有效去除信号光滑区域或平滑区域的噪声,但对边缘产生不利影响。通常,在减少信号中的噪声的同时,保持边缘是重要的。例如,边缘对于图像的视觉外观是至关重要的。对于(高斯)噪声的小至中等水平,中值滤波器在消除噪声方面明显好于高斯模糊,同时为给定的固定窗口大小保留边缘。然而,对于高噪声,其性能并不比高斯模糊好,而对于散斑噪声和椒盐噪声(冲动噪音),这是特别有效的。因此,中值滤波在数字图像处理中被广泛使用。
设计思想就是检查输入信号中的采样并判断它是否代表了信号,使用奇数个采样组成的观察窗实现这项功能。观察窗口中的数值进行排序,位于观察窗中间的中值作为输出。然后,丢弃最早的值,取得新的采样,重复上面的计算过程。

背景复杂的情况下还有肤色分割

平滑滤波是低频增强的空间域滤波技术。它的目的有两类:一类是模糊;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行,就是求邻近像元点的平均亮度值。

两个函数搭配起来使用。

色彩空间的转换

RGB:R:red(红色通道);G:green(绿色通道);B:blue(蓝色通道),三种颜色的叠加可以得到人类视力所能感知的所有颜色。
YCBCR:Y表示颜色的明亮度和浓度,也可叫灰度阶。(通过RGB转换YCBCR提取Y分量也可以得到灰度图像)
Cb:表示颜色的蓝色浓度偏移量即RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
Cr:表示颜色的红色浓度偏移量即RGB输入信号红色部分与RGB信号亮度值之间的差异。
二者转换,可以将亮度和色度分离开,更直白的看到自己所需要图像。
二者相互转换公式:
1、RGB转YCBCR
Y=0.257*R+0.564*G+0.098*B+16 Cb=-0.148*R-0.291*G+0.439*B+128 Cr=0.439*R-0.368*G-0.071*B+128
2、YCBCR转RGB
R=1.164*(Y-16)+1.596*(Cr-128) G=1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128) B=1.164*(Y-16)+2.017*(Cb-128)

然后使用find找到index

在颜色里面用集合算区域,然后把区域二值化出来,完成分割。

然后我们看降噪函数

害,ML的编辑器太丑了,我换vscode了

首先我们现在有的图像是一个有一些小窟窿的二值图像,使用这个函数来抠图

给一个要填眼的范围,然后下面就给镶个边

strel 对象表示一个平面形态学结构元素,该元素是形态学膨胀和腐蚀运算的重要部分。
平面结构元素是一个二维或多维的二值邻域,其中 true 像素包括在形态学运算中,false 像素不包括在内。结构元素的中心像素称为原点,用于标识图像中正在处理的像素。使用 strel 函数(如下所述)创建一个平面结构元素。

就这

绘制出来就是这样的

执行一下开运算

执行前

执行后

然后再执行上面的操作,最后再滤波一下。

然后就整个降噪也是说完了。

然后说这个获得图像边缘:

一次可以按照上面的写法集成多个算子

来使用Python展示一下这些二值化提取边缘函数的效果:

代码在最后

自带美女

其中,Laplacian算子对噪声比较敏感,由于其算法可能会出现双像素边界,常用来判断边缘像素位于图像的明区或暗区,很少用于边缘检测;Robert算子对陡峭的低噪声图像效果较好,尤其是边缘正负45度较多的图像,但定位准确率较差;Prewitt算子对灰度渐变的图像边缘提取效果较好,而没有考虑相邻点的距离远近对当前像素点的影响;Sobel算子考虑了综合因素,对噪声较多的图像处理效果更好。

自己选吧,我近视眼感觉都差不多。

接着上面的函数继续:

接着我们给它加一个最小的矩形

这太成熟了。。。直接搞现成的代码就好。

这个函数可以求二值图像最小外接矩形(a:面积最小;p:周长最小) 斜矩形

大概的一个效果

除了这个绘制线框以外,还有两个线条

情况就是三个

我们接下来说下一下图像的特征这个事情,无论从前还是现在的神经网络的什么东西,关注的都是图像的特征,这种特征是不随外面的变化而变化的,更多的是哲学上面的性质:

我们用傅里叶描述子和Hu矩来说明这个

傅里叶描述子是一种图像特征,具体来说,是一个用来描述轮廓的特征参数。其基本思想是用物体边界信息的傅里叶变换作为形状特征,将轮廓特征从空间域变换到频域内,,提取频域信息作为图像的特征向量。即用一个向量代表一个轮廓,将轮廓数字化,从而能更好地区分不同的轮廓,进而达到识别物体的目的。

冈萨雷斯的《数字图象处理》

总结:傅立叶描述子可以很好地描述轮廓特征,并且只需少量的描述子(即向量中的数不需要太多)即可大致代表整个轮廓。其次,对傅立叶描述字进行简单的归一化操作后,即可使描述子具有平移、旋转、尺度不变性,即不受轮廓在图像中的位置、角度及轮廓的缩放等影响,是一个鲁棒性较好的图像特征。

看最后图的两个的样子

比较两个轮廓最简单的方法是比较二者的轮廓矩,轮廓矩代表了一个轮廓,一副图像,一组点集的全局特征,矩信息包含了对应对象不同类型的集合特征,例如大小,位置,角度,形状等。

Hu矩是归一化中心矩的线性组合,Hu矩再图像旋转,缩放,平移等操作后,仍能保持矩的不变性,经常使用 Hu 矩来识别图像的特征。

我们要单独的构建一个函数

等下再说这个,我们再贴一下Hu的实现:

5,6,7后面还有很长的公式就不放了

直接使用现成的函数来求解

使用的函数是这个

别问太多的原理,我研究透了肯定会写,现在能快速实现最重要,毕竟我快饿死了。

矩是一个数学的概念

根据矩的定义,二维图像的灰度用f(x,y)表示,零阶矩m00表示为:

表示的是图像灰度的总和

图像的一阶矩m10和m01表示用来确定图像的灰度中心,

根据中心矩的定义很容易计算出,u10=0,u01=0

算球算,直接写

二阶矩有三个,m11 m02 m20,也成为惯性矩。它们可以确定物体的几个特性: 

1.二阶中心矩用来确定目标物体的主轴,长轴和短轴分别对应最大和最小的二阶中心矩。可以计算主轴方向角。 

2.图像椭圆:由一阶、二阶矩可以确定一个与原图像惯性等价的图像椭圆。所谓图像椭圆是一个与原图像的二阶矩及原图像的灰度总和均相等的均匀椭圆。使得主轴与图像的主轴方向重合,一边分析图像性质。

对于三阶或三阶以上矩,使用图像在轴或轴上的投影比使用图像本身的描述更方便。 三阶矩:投影扭曲,描述了图像投影的扭曲程度。扭曲是一个经典统计量,用来衡量关于均值对称分布的偏差程度。 四阶矩:投影峰度,峰度是一个用来测量分布峰度的经典统计量。可以计算峰度系数。当峰度系数为0时,表示高斯分布;当峰度系数小于0时,表示平坦的少峰分布;当峰度系数大于0时,表示狭窄的多峰分布。
图像的hu矩是一种具有平移、旋转和尺度不变性的图像特征。
普通矩的计算: (对上面的普通矩阵进行总结)f(x,y)的p+q阶原点矩可以表示为:


而数字图像是一个二维的离散信号,对上述公式进行离散化之后:

C,R,行列

各种矩的物理意思:

普通矩:0阶矩(m00):目标区域的质量 
1阶矩(m01,m10):目标区域的质心 
2阶矩(m02,m11,m20):目标区域的旋转半径 
3阶矩(m03,m12,m21,m30):目标区域的方位和斜度,反应目标的扭曲
但是目标区域往往伴随着空间变换(平移,尺度,旋转),所以需要在普通矩的基础上构造出具备不变性的矩组—hu矩。
中心矩:构造平移不变性 由零阶原点矩和一阶原点矩,我们可以求得目标区域的质心坐标:

由求得的质心坐标,我们可以构造出中心矩:

由于我们选择了以目标区域的质心为中心构建中心矩,那么矩的计算时永远是目标区域中的点相对于目标区域的质心,而与目标区域的位置无关,及具备了平移不变性。

归一化中心矩:构造尺度不变性
为抵消尺度变化对中心矩的影响,利用零阶中心矩u00对各阶中心距进行归一化处理,得到归一化中心矩:
由上文可知,零阶矩表示目标区域的质量(面积),那么如果目标区域的尺度发生变化(缩小2倍),显然其零阶中心矩也会相应变小,使得矩具备尺度不变性。

Hu矩:构造旋转不变性 
利用二阶和三阶规格中心矩可以导出下面7个不变矩组(Φ1 Φ7),它们在图像平移、旋转和比例变化时保持不变。 

按照分析记得代码的归一化

然后把特征值写到数组里面

通过找到上面的区域,显示上去

最后一步了,查找特征值有没有,如果没有就msgbox弹出

data文件是提前算好的数据

算好的,已有的,这明显就是一个距离的问题:

我们使用豪斯多夫距离



代码在最后

循环的从中取出距离来对比就给出了结果

至于代码,不准备开源,有需要的来买。

https://blog.csdn.net/weixin_46118768/article/details/119866798
function [mhd] = ModHausdorffDist(A, B)    Asize = size(A);    Bsize = size(B);
% Check if the points have the same dimensions if Asize(2) ~= Bsize(2) msgbox('两个集合的维数不同,请统一!', '提示'); else % Calculating the forward HD fhd = 0; % Initialize forward distance to 0
for a = 1:Asize(1) % Travel the set A to find avg of d(A,B) mindist = Inf; % Initialize minimum distance to Inf
for b = 1:Bsize(1) % Travel set B to find the min(d(a,B)) tempdist = norm(A(a, :) - B(b, :));
if tempdist < mindist mindist = tempdist; end
end
fhd = fhd + mindist; % Sum the forward distances end
fhd = fhd / Asize(1); % Divide by the total no to get average % Calculating the reverse HD rhd = 0; % Initialize reverse distance to 0
for b = 1:Bsize(1) % Travel the set B to find avg of d(B,A) mindist = Inf; % Initialize minimum distance to Inf
for a = 1:Asize(1) % Travel set A to find the min(d(b,A)) tempdist = norm(A(a, :) - B(b, :));
if tempdist < mindist mindist = tempdist; end
end
rhd = rhd + mindist; % Sum the reverse distances end
rhd = rhd / Bsize(1); % Divide by the total no. to get average mhd = max(fhd, rhd); % Find the minimum of fhd/rhd as % the mod hausdorff dist end
end
原文链接:https://blog.csdn.net/devcloud/article/details/126764789
# -*- coding: utf-8 -*-import cv2import numpy as npimport matplotlib.pyplot as plt
# 读取图像grayImage = cv2.imread('./222.png', cv2.IMREAD_GRAYSCALE)
# 高斯滤波gaussianBlur = cv2.GaussianBlur(grayImage, (3, 3), 0)
# 阈值处理ret, binary = cv2.threshold(gaussianBlur, 68, 255, 0)
# Roberts算子kernelx = np.array([[-1, 0], [0, 1]], dtype=int)kernely = np.array([[0, -1], [1, 0]], dtype=int)x = cv2.filter2D(binary, cv2.CV_16S, kernelx)y = cv2.filter2D(binary, cv2.CV_16S, kernely)absX = cv2.convertScaleAbs(x)absY = cv2.convertScaleAbs(y)Roberts = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
# Prewitt算子kernelx = np.array([[1, 1, 1], [0, 0, 0], [-1, -1, -1]], dtype=int)kernely = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]], dtype=int)x = cv2.filter2D(binary, cv2.CV_16S, kernelx)y = cv2.filter2D(binary, cv2.CV_16S, kernely)absX = cv2.convertScaleAbs(x)absY = cv2.convertScaleAbs(y)Prewitt = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
# Sobel算子x = cv2.Sobel(binary, cv2.CV_16S, 1, 0)y = cv2.Sobel(binary, cv2.CV_16S, 0, 1)absX = cv2.convertScaleAbs(x)absY = cv2.convertScaleAbs(y)Sobel = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
# Laplacian算子dst = cv2.Laplacian(binary, cv2.CV_16S, ksize=3)Laplacian = cv2.convertScaleAbs(dst)

# 用来正常显示中文标签plt.rcParams['font.sans-serif'] = ['SimHei']
# # 显示图形plt.figure(figsize=(12, 5))plt.subplot(231), plt.imshow(grayImage), plt.title( '原始图像'), plt.axis('off') # 坐标轴关闭plt.subplot(232), plt.imshow( binary, cmap=plt.cm.gray), plt.title('二值图'), plt.axis('off')plt.subplot(233), plt.imshow(Roberts, cmap=plt.cm.gray), plt.title( 'Roberts算子'), plt.axis('off')plt.subplot(234), plt.imshow(Prewitt, cmap=plt.cm.gray), plt.title( 'Prewitt算子'), plt.axis('off')plt.subplot(235), plt.imshow(Sobel, cmap=plt.cm.gray), plt.title( 'Sobel算子'), plt.axis('off')plt.subplot(236), plt.imshow(Laplacian, cmap=plt.cm.gray), plt.title( 'Laplacian算子'), plt.axis('off')
plt.show()
https://blog.csdn.net/sml115161/article/details/120689698
https://ww2.mathworks.cn/help/releases/R2020b/images/ref/imfilter.html
https://blog.csdn.net/qq_43826220/article/details/127568505

评论 (0)
  • 面向多功能嵌入式客户端系统的高端平台
    面向多功能嵌入式客户端系统的高端平台 白皮书
  • 中低压配电网实用技术指导书.pdf
    中低压配电网实用技术指导书.pdf

  • Git、Jenkins、Ansible实践CI/CD课程(20章完整版)
    分享课程——《Git、Jenkins、Ansible实践CI/CD》,课程一共20章,提供配套的文档+软件+脚本下载!学完本课程,你将会学到:掌握CI/CD自动化部署Git\Jenkins\Sonar\Nexus\Ansible\shell等内容。

    课程内容包含:
    1、掌握持续集成、持续交付、持续部署、自动化部署流程、容器发布流程、部署策略(蓝绿、灰度、滚动)
    2、掌握Git提交代码、回退代码、区域概念、分支模型;掌握远程仓库Gitee、Gitlab、备份、恢复
    3、掌握Jenkins基本应用、Jenkins集成Gitlab、集成Shell脚本、集成Ansible
    4、掌握Jenkins构建静态站点CI与CD,使用Shell、Ansible来实现不同环境的滚动升级策略
    5、掌握Jenkins构建Java应用(War包类型、Jar包类型),实现WebHook全自动CI流程
    6、掌握Nexus制品库,以及Jenkins如何集成制品库,实现自动拉取代码,自动编译代码,自提交制品库
    7、掌握Sonarqube质量检测,以及Jenkins集成Sonarqube进行代码质量扫描
    8、掌握Jenkins集成DingDing,实现Sonarqube质量检测结果状态通知
    9、掌握Jenkins全自动化CI流程,自动化部署测试环境CD流程,手动部署生产环境CD流程
    10、掌握JenkinsPipeline流水线CI与CD、掌握Jenkins分布式构建及RBAC权限管理

    课程大纲:
    第1章 持续集成CI、CD核心概念
    第2章 自动化发布代码策略
    第3章 Git分布式版本控制-本地仓库
    第4章 Git分布式版本控制-远程仓库
    第5章 Gitlab分布式版本控制系统-入门
    第6章 Gitlab分布式版本控制系统-进阶
    第7章 Gitlab分布式版本控制系统-维护
    第8章 Jenkins快速入门
    第9章 Jenkins集成Git、Shell、Ansible
    第10章 Jenkins基于Shell构建CI实战
    第11章 Jenkins基于Ansible构建CI实践
    第12章 Jenkins基于触发器实现自动化CI实践
    第13章 Jenkins基于CommitID实现自动化回退
    第14章 Jenkins实现Java项目的CI实践
    第15章 Jenkins基于Nexus实现CI-CD实践
    第16章 Jenkins基于Jar包实现CI-CD实践
    第17章 Jenkins集成SonarQube实现CI质量检查实践
    第18章 Jenkins集成钉钉实现CI质检结果通知实践
    第19章 Jenkins Pipeline流水线实现CI-CD实践
    第20章 Jenkins分布式构建与RBAC权限实践
    文档+软件+脚本
  • C++微服务架构及安全云盘项目实训课程
    分享课程——C++微服务架构及安全云盘项目实训,包含课程配套资料下载。


    本课程从实践中理解软件工程,学习需求分析、架构设计、详细设计文档的编写,学习编程规范,了解多人协作开发策略,理解并引用软件的版本管理,熟悉git工具和软件发布管理流程, bug管理提交问题。
  • 15、磁环线圈共模电感封装尺寸你知道怎么选吗
    15、磁环线圈共模电感封装尺寸你知道怎么选吗
  • 13、谷景科普磁芯粉末对功率滤波电感选型的影响
    13、谷景科普磁芯粉末对功率滤波电感选型的影响
  • 红外按键之USB键盘

    红外按键之USB键盘

    红外按键之USB键盘

    红外按键之USB键盘

  • 中低压配电实用技术.pdf
    中低压配电实用技术.pdf
  • 《精通机器学习:MATLAB 分步实施指南》
    《精通机器学习:MATLAB 分步实施指南》
  • 运算放大器权威指南 Bruce Carter著作
    从运放基础理论到实际应用及注意事项。是一部详细的教材
  • 中低压配电网装置性违章的表现与整治.pdf
    中低压配电网装置性违章的表现与整治.pdf

  • 14、谷景科普0510色环电感超声波震荡后出现不良的常见原因分析
    14、谷景科普0510色环电感超声波震荡后出现不良的常见原因分析
  • 基于python人工智能算法的五官识别设计资料
    基于python人工智能算法的五官识别设计资料
  • 信道编码;Turbo码;LDPC码
    介绍了宽带移动通信系统中先进的信道编码技术的软硬件实现,即Turbo码和LDPC码的FPGA实现。书中首先详细介绍了FPGA设计的基础知识,然后讲解信道编码技术中的码的构造、编译码算法和信道编码技术实现相关的软硬件知识
  • 一、二极管基础 1、   基础知识 2、   各项参数: (1)    结电容       结电容有两种,分别是势垒电容和扩散电容。        势垒电容:PN结两端电压变化,引起积累在中间区域的电荷数量的改变,从而呈现电容效应,这个电容就是势垒电容。 扩散电容:当有外加正向偏压时,在PN结两侧的少子扩散
    HGno1 2023-05-29 22:55 177浏览
  • 今日(5月29日),广东省人民政府网站发布,中共广东省委、广东省人民政府关于新时代广东高质量发展的若干意见(以下简称意见)。意见指出,要坚持制造业当家,强化高质量发展的产业根基。《意见》指出,到2027年,全省高质量发展实现新进步,自主创新能力明显提高。到2035年,高质量发展实现更大成效,科技创新能力大幅跃升,城乡区域发展更加协调更加平衡。意见称,广东建设现代化产业集群。着力发展先进制造业,打造梯次型产业格局,争创国家先进制造业集群。推动20个战略性产业集群发展,重点加快发展集成电路、新能源汽
    传感器专家网 2023-05-29 19:54 138浏览
  • 射频(RF)电路板设计虽然在理论上还有很多不确定性,但RF电路板设计还是有许多可以遵循的法则。不过,在实际设计时,真正实用的技巧是当这些法则因各种限制而无法实施时,如何对它们进行折衷处理,本文将集中探讨与RF电路板分区设计有关的各种问题。1、微过孔的种类电路板上不同性质的电路必须分隔,但是又要在不产生电磁干扰的最佳情况下连接,这就需要用到微过孔(microvia)。通常微过孔直径为0.05mm~0.20mm,这些过孔一般分为三类,即盲孔(blind via)、埋孔(bury via)和通孔(th
    攻城狮华哥 2023-05-30 11:27 206浏览
  • MEMS芯片和ASIC芯片是一个MEMS传感器中技术和价值含量最高的部分。你知道MEMS芯片是怎么被制造出来的吗?MEMS芯片与集成电路芯片有什么区别?此外,谈到MEMS传感器,我们还常说ASIC芯片,ASIC芯片是什么?对MEMS传感器有什么作用?MEMS传感器的ASIC芯片相比其他ASIC芯片有什么特别?MEMS传感器的主要构造?MEMS芯片与集成电路芯片有什么区别?MEMS是Micro-Electro-MechanicalSystem的缩写,中文名称是微机电系统,是将微电子电路技术与微机械
    传感器专家网 2023-05-29 20:00 137浏览
  • 当谈及现代科技中的传感器射频/微波技术时,陶瓷线路板是不可或缺的重要组成部分。作为这一领域的创新引领者,陶瓷线路板以其卓越的性能和独特的特点,推动着传感器射频/微波技术的革新。本文将为您揭示陶瓷线路板在该领域的重要性,并通过数据展示其卓越的优势。 陶瓷线路板以其材料特性和制造工艺成为传感器射频/微波应用的理想选择。 一、首先,陶瓷材料具有优异的机械强度和耐高温性能,能够承受高功率和极端环境条件下的工作。根据数据显示,陶瓷线路板的机械强度远超过传统的有机基板,可以承受更高的压力和振动,从而
    斯利通陶瓷电路板 2023-05-29 16:58 246浏览
  • [2] 电容器与电容 (1)什么是电容器? 电容器是用于储存电荷的器件,其中包含一对或多对由绝缘体分隔的导体。容器通常由铝、钽或陶瓷等材料制成。各种材料的电容器在系统中使用时具有各自的优缺点,如表 1 所示。陶瓷电容器通常是理想的选择,因为其电容变化最小,而且成本较低。                 (2)  直流电压降额        
    HGno1 2023-05-29 23:42 183浏览
  • 在电脑内存条、显卡上,有一排金黄色导电触片,就是大家俗称的“金手指”。在PCB设计制作行业中的“金手指”(Gold Finger,或称Edge Connector),是由connector连接器作为PCB板对外连接网络的出口。关于“金手指”你知道多少呢?小编已做足了功课,今天就带大家全面了解PCB中“金手指”的设计,以及一些可制造性细节的处理等知识。“金手指”的功能用途1、“金手指”互连点当辅助PCB(如显卡、内存条)连接到主板时,会通过几个母槽中的其中一个插槽,如PCI、ISA或AGP槽,在外
    攻城狮华哥 2023-05-31 11:46 117浏览
  • By Toradex秦海1). 简介嵌入式 Linux  由于运行平台通常资源受限同时对稳定性要求高,因此需要比较精简,那么针对 SSH 服务器/客户端应用,通常也不使用庞大的 OpenSSH,而是采用十分精简的 Dropbear SSH工具。Dropbear 是一个基于 MIT License 的开源软件,其一些基本信息可以参考如下软件发布页面:https://matt.ucc.asn.au/dropbear/dropbear.html 本文所演示的平台来自于Toradex
    hai.qin_651820742 2023-05-31 15:16 113浏览
  • [1] 压降 (1)什么是压降? 压降电压 VDO 是指为实现正常稳压,输入电压 VIN 必须高出所需输出电压 VOUT(nom) 的最小压差。 (2)决定压降的因素是什么?                           
    HGno1 2023-05-29 23:34 177浏览
  • 网约车行业竞争越来越卷,自动驾驶成为网约车平台重要的发力点,滴滴、T3出行、曹操出行等网约车平台相继对外宣布自动驾驶的计划并提出了“小目标”。滴滴发布两款自动驾驶核心硬件——“北曜Beta”激光雷达和三域融合计算平台“Orca虎鲸”,并宣布首款自动驾驶量产车型计划于2025年接入滴滴共享出行网络。T3出行联手轻舟智航在苏州启动Robtaxi的公开运营,并计划到2026年末,L4自动驾驶车辆商业运营达1000辆。曹操出行与吉利汽车达成战略合作,计划围绕出行平台构建集车内空间开发、定制车、智能驾驶、
    刘旷 2023-05-30 10:51 229浏览
  • 前言 2022年,全球半导体产业连续高增长,进入调整周期。与此形成对比,在新能源汽车、光伏、储能等需求带动下,第三代半导体产业保持高速发展,全球化供应链体系正在形成,竞争格局逐步确立,产业步入快速成长期。而国内第三代半导体产业经过前期产能部署和产线建设,国产第三代半导体产品相继开发成功并通过验证,技术稳步提升,产能不断释放,国产碳化硅(SiC)器件及模块开始“上机”,生态体系逐渐完善,自主可控能力不断增强,整体竞争实力日益提升。 01 产能释放,第三代半导体产业即将进入”战国
    普赛斯仪表 2023-05-29 17:31 165浏览
  •  近日,财政部会计司发布了《关于公布电子凭证会计数据标准(试行版)的通知》,为做好电子凭证会计数据标准深化试点工作,研究制定了9类电子凭证的会计数据标准。在通知的《电子凭证会计数据标准——全面数字化的电子发票(试行版)》指南中,明确了数电票报销入账归档的具体处理方式。    指南明确: 接收方取得数电票报销入账归档的,应按照《财政部 国家档案局关于规范电子会计凭证报销入账归档的通知》(财会〔2020〕6号,以下称《通知》)和《会计档案管
    科技财经汇 2023-05-29 20:47 195浏览
  • 近日,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适配智芯半导体的Z20K14x产品家族。同时,经纬恒润完成了对智芯半导体Z20K14X 产品MCAL软件适配和工程集成,为智芯半导体提供了全套AUTOSAR解决方案。  左图:经纬恒润AUTOSAR EAS CP软件工程配置页面  右图:智芯半导体Z20K14x产品板   通过本次合作,智芯半导体的芯片产品将以功能更加完善、性能更加量化、服务更加完整的状态面向车
    hirain 2023-05-30 11:12 243浏览
  • 阻抗匹配是指负载阻抗与激励源内部阻抗互相适配,得到最大功率输出的一种工作状态。阻抗匹配是微波电子学的一部分,也是射频电路中非常重要的一部分,主要用于传输线路中,以达到能够将所有高频微波信号传输到负载点的目的。回溯到原点,提高能源效率。阻抗,顾名思义就是对电路中电流起到阻碍作用的元器件。我们在射频电路中,又引入了特征阻抗和等效阻抗两个概念。特征阻抗是射频传输线的一个固有特性,其物理意义是在射频传输线上入射波电压与入射波电流的比值,或者反射波电压和反射波电流的比值。等效阻抗也是传输线理论的一个概念,
    cxtf004 2023-05-30 14:58 189浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦