机器视觉系统设计:视觉系统中的成像基准

开发视觉系统的一个重要活动是验证其部署是否符合工程规范。一个成功的视觉应用程序的两个特点是它无需工程师干涉情况下正常工作了多长时间,以及它的维护和复制部署是多么简易。实现所有如上所述目标的一个关键步骤是确定视觉系统的基准。

在这里使用的上下文中,基准是对所需系统特性的度量或指示。在本文的范围内,有两个领域应加以基准:

  • 成像(相机和镜头)

  • 光照

其中,我们通过视觉软件获取和存储图像后,可对图像基准项目进行离线分析。

视觉系统首次开发时,视觉工程师进行测试,以确保组件按预期执行。这些测试帮助视觉工程师建立系统基准,以验证视觉系统在准备调试时的性能,并供今后参考。

当视觉系统进行维护时,技术人员可以重新检查系统基准项目,并将它们与既定的基准进行比较。这使技术人员能够确定是否发生了重大变化,以及在哪里发生了这些变化,因此在必要时采取了适当的纠正措施。它还避免了技术人员盲目变化系统配置,导致的一系列系统功能退化。如果没有基准,即使是经验丰富的视觉工程师也无法确保视觉系统恢复到原来的运行状态。

基准测试确实需要使用特定的工具,如测试图形。其中一些工具可能是特定于应用程序的,而另一些工具可能更通用。基准测试不是一个便于系统调整或校准的过程;系统的调整和校准必须在基准测试之前执行。由于基准测试不是校准,因此它不需要像校准/测量的任务,严格遵照国际标准的可追溯性,有些工具(如测试图形)可以通过现有技术(例如激光打印机)购买或创建。然而,这些工具必须有适当的材料,避免基准工具在视觉系统的使用寿命内发生变形或改变。维护基准工具是视觉系统团队的额外责任。

最后,对视觉系统进行基准测试不是关于精确的定量数据,而是关于能够很好地确定视觉系统特性的数据,这样,如果这些特性被再现,那么视觉系统的性能可以预期与基准记录时一样好。

我们可以对成像进行基准测试提供以下特征的数据:

  • 关键成像尺寸

  • 相机设置

  • 镜头设置

  • 照明器设置(如果有的话)

  • 影像视野

  • 成像(光学)分辨率

  • 景深

  • 光照强度

  • 照明方向

  • 照明均匀性

  • 颜色

  • 图像失真

  • 图像噪声

    02

    记录系统设置

    视觉系统的设置必须记录下来,作为基准测试的准备。这包括与成像相关的重要机械尺寸,以及所有调整位置和可访问参数。这些值必须是视觉系统生产环境中实际使用的值。 成像包括照明、相机和调整后的镜头,调整到最佳状态。成像基准要求采集和存储未经处理的图像。几乎所有的视觉系统都支持这种功能。

应记录的典型设置有:

  • 光源相对于视野的三维测量位置

  • ·视场到镜头的工作距离

  • ·镜头光圈设置

  • ·镜头聚焦设置

  • ·镜头焦距设置(如果使用变焦或变焦镜头)

  • ·相机增益

  • ·相机曝光时间

  • ·相机帧速率(如适用)

  • ·所有其他可编程摄像头设置,即使出厂默认设置

  • ·照明功率水平(如果可调)

  • 照明脉冲宽度(如果使用脉冲照明)

当使用基准测试来确保再现性时,无论是复制视觉系统还是更换现有视觉系统上的部件,都需要考虑到组件中存在变化的事实。同一品牌和型号的两台相机在灵敏度上会有所不同。这些差异可能需要改变相机的增益、曝光时间或光源的输出。

同一品牌和型号的两个镜头的有效焦距可能略有不同,通常小于3%。有效焦距的变化可能会改变视场的大小。或者视场大小的变化是可容忍的,或者改变相机的工作距离以获得精确的视野。

光源的种类多样,光输出调整各有不同,例如,光源中使用的特定LED组时,可以调整光源控制器,改变驱动电流大小,控制光输出强度,将成像性能恢复到基准状态。

03

基准图像亮度

由于相机的灵敏度不同,光源在光输出强度方面也不同,因此非常希望对图像亮度进行基准测试。图像亮度最好使用在视野中具有示例性的局部图像的灰度直方图来记录,另外,记录具有示例性的局部图像的灰度均值也是一种方法。对于未来的基准测试,如果可以存储和保存相同的零件时,则应使用相同的零件,并保证使其反射率不会降低(例如氧化作用使反射率降低)

在复制系统时,应使新系统的图像亮度与基准系统的直方图相匹配。 

图片

图1-灰度直方图

可能需要视觉工程师来决定是否需要改变照明器输出、摄像机增益或曝光,或接受差异。使用现代机器视觉算法,如果图像的亮度有一定的变化,只要关键像素没有进入饱和(灰度值达到255),性能就可以保持合理的一致性。

应该注意的是,改变镜头的f数,虽然一个非常容易的选择,以获得灰度直方图匹配,但这是不可取的。虽然改变透镜孔径确实会影响镜头的集光功率,从而影响强度直方图,但它也会改变镜头的景深和镜头的分辨率。保持景深和光学分辨率通常比灰度直方图水平的轻微变化更为重要。

对于彩色视觉系统,应该获取和存储三个颜色通道中每个通道的灰度直方图,通常是红色、绿色和蓝色

04

基准视野

本基准记录的两个特征是视场的大小和位置。视场的大小与实际放大率有关,位置与相机/镜头指向有关。

为了对视场进行基准测试,必须将靶标定位在视野的中心。靶标可以是任何有利于观察的东西。它可以像天平一样简单,也可以像校准的靶标一样复杂,也可以是在激光打印机上制作的项目专用靶标。重要的要求是,每次对系统进行基准测试时,目标都可以定位在完全相同的位置。这可能需要对视觉系统设计中的夹具进行一些早期思考。

记录并保存图像以及从标尺或目标读取的尺寸和位置尺寸。

图片

图2-标尺用于评估视场大小

在评估视场尺寸时,请记住,大多数透镜的有效焦距公差在±3%左右。因此,在复制一个视觉系统时,实际视场的大小可能会有微小的差异。

图片

图3-商业测试图样

05

基准光学分辨率

系统级的光学分辨率表征图像中可以分辨的细节。它取决于相机的图像分辨率(像素的行和列)、图像传感器上像元的大小和镜头的光学分辨率。通常光学分辨率是在图像上指定的,但为了应用的目的,分辨率将在最重要的地方评估,即在应用场景中。

光学分辨率定义为在像面处镜头在单位毫米内能够分辨开的黑白相间的条纹对数,如下图所示:

图片

分辨率为1/2d,其中,d为线宽。分辨率的单位为lp/mm(线对/毫米)。

另外,一般使用的分辨率公式:

分辨率(ε)=0.61×λ/N.A.(Reyleigh公式)

λ:使用的波长或辐射(λ=0.55µm用于可见光)

N.A.:物镜数值孔径

在实际工业应用中,系统使用面阵或线阵传感器作为成像器件,因此系统的分辨率通常也会受到成像传感器中像元分辨率的限制。像元分辨率定义为单位毫米内像素单元数的一半,即=1/2p,其中p为像素单元的尺寸大小。例如一个CCD的像元尺寸大小为5×5微米,则像元分辨率则为:=1/(2*0.005)=100(lp/mm)。传感器的像元分辨率限制了系统的最高分辨率,即使镜头的分辨率再高,系统也不可能分辨高于像元分辨率的细节。

在实际使用中,普通镜头分辨率低,即使搭配高像素的相机,最后也只能生成模糊的影像。

基准分辨率的典型技术是将分辨率靶标,如USAF分辨率条形图,放置在中心和所有四个角落。大多数商业分辨率靶标都是为非常高的分辨率而设计的。

图片

图5-USAF分辨率目标的一个版本

有时使用激光打印机制作您自己的项目特定靶标。不过,请记住,激光打印机打印出来后目标尺寸不稳定。然而,打印后的文件将保持尺寸稳定,打印文件应与项目资料一起保存。对于这样一个仅用于基准目的的靶标,只需要三组平行条图形:一个用于预期分辨率,一个用于稍微粗的分辨率(名义上时预期分辨率乘以1.15),一个为稍高的分辨率(名义上是预期分辨率的0.85倍)。由于下面解释的原因,角落上的平行条必须是双向的。

例如,如果您的目标分辨率在现场是4线对/毫米,那么每个暗和白条应该是0.125毫米宽的目标分辨率。对于较粗的条形图,每个暗条和白色条将宽0.144毫米,对于更精细的条形图,每个条将宽0.106毫米。

在视野的中间,通常只需要注意将条形分辨率目标定在一个方向。然而,在视场的角落,有必要记录两个方向的分辨率,一是指向视场中心的条形图(切向方向),二是指向与先前方向呈90度的条形图(径向或矢状方向)。在角落,镜头的分辨率在这两个方向中的每一个都是不同的。

图片

图6-特定于项目的分辨率目标

上图只有三组条形图仅用于验证系统成像是否达到了分辨率,但无法确定成像的极限分辨率。

商业用的靶标,如USAF,有一个广泛的条形图案宽度范围,可以用来寻找极限分辨率。

06

基准景深

在确定景深基准时,不干扰任何成像参数是非常重要的。这包括镜头的焦距、镜头的光圈和相机的高度(镜头工作距离)。

衡量景深的方法有两种:

  • 倾斜的比例尺

  • 目标升高

倾斜的比例尺

倾斜比例尺可以是一把直尺或标尺,与视野成已知角度。图像中刻度表现为锐利聚焦的范围给出了景深范围。虽然通常使用刻度尺,但也可以制作或购买景深测量仪。商用的景深测量仪通常比倾斜标尺或直尺更容易固定到位。

图片

图7-在一个角度上示意景深范围的直尺

升高的工件

在标称工作距离以及所需的景深范围的近和远限制处成像。这通常需要设计和构建夹具,以确保结果的重现性。例如,像实验室升降台这样的东西可以用来将工件垂直移动到所需的高度。

如果在所需景深限制和标称高度下达到所需分辨率,则景深有效。景深有可能远远超出要求的范围。利用升高工件的很难实际测量景深的范围。

图8-景深目标

图片

图片

图9-成像显示景深范围

07

基准照明强度

照明强度可以用两种方法之一来衡量:

  • 使用校准的光度计

  • 使用安装好的相机

使用光度计的优点是测量是校准的(通常±10%)。使用机器视觉系统的相机的优点是,您可确保可重复照明,即使灵敏度因相机而异。对于非常小的视场,例如显微镜,光度计方法可能是不切实际的。

前照明和背光的程序是不同的。

光度计,前照明

测量现场入射光能。光度计的传感器放置在场景的中心,并读出测量的光的值。光度计通常以每平方米入射光能量的lux-流明读取。这种方法的缺点是,对于大多数视觉应用,仪表的传感器只在视场的一小部分中拾取入射光,其读数可能受到光照不均匀性的影响。非常重要的是,基准测试需要提供一种方法来重新固定光传感器;无论是通过夹具还是通过仔细的测量。

光度计方法不适用于非常小的视野,如那些使用显微镜。

光度计,背光

在这种情况下,光度计的传感器就放在相机镜头的正前方。仪表的读数仍以勒克斯为单位;更准确的读数应为坎德拉,但大多数光度计都不支持这种测量读数。

相机,前照明

第二种测量强度的方法是使用视觉系统的相机。相机不是经过校准的传感器-两个相同品牌和型号的相机将具有不同的灵敏度。所以测量是相对的。然而,目标是获得正确的曝光;因此,使用视觉系统的摄像机进行测量实现一部分目的——知道成像设置满足其要求。但是,它不能保证成像设置可以被复制。请参阅上面的“图像亮度基准”。

最好用均匀反射的靶标覆盖视野。对于大多数照明方法,这个靶标应该是漫反射的。一些有用材料的例子是照相灰卡(一面反射18%,另一面反射90%)。对于非常大的视野,可能有必要借助于纸张或布料的背景,但期望这些产品的制造商控制其产品的反射率是不切实际的,并且测量的再现性也会受到影响。

有时,视觉系统是用来成像镜面反射光的。在这些情况下,使用漫反射背景可能无法提供令人满意的基准强度方法。如果物体是平面的,那么背景可以是适当尺寸的平面镜。如果被成像的对象是一个更复杂的形状,那么除了使用漫反射背景外,很难对强度进行基准测试,这种情况下,难以进行基准量化。

背景设置到位后,使用照明设置和相机参数设置捕捉场景图像。让视觉系统计算并报告场景的最大和平均灰度。您必须确保视觉系统报告的最大灰度值不是视觉系统可用的最大值(例如,对于具有8位像素的视觉系统,最大灰度值不能为255)。如果报告了最大的灰度值,这表示相机处于饱和状态,则最大读数无效,平均灰度读数受损。除了少数例外,相机在饱和状态下工作是不可取的。

相机,背光

在这种情况下,让相机直接拍摄空场景,并报告图像的最大和平均灰度。同样,相机处于饱和状态通常是不可取的。在某些情况下,背光强度被设计为很高,使相机饱和。在这种情况下,必须降低相机曝光时间,以避免相机饱和。较好的方法是使用ND镜。如果视觉系统方便的话,也可以通过使用更快的快门速度(较短的曝光时间)来减少相机的曝光量,但稍微不太理想。

08

基准照明方向

照明方向有时是需要基准量化的,至少对于向前照明来说,使用一个抛光球体放置在视野中。事实上,抛光的半圆球会更好,但这些有点不寻常。球体通常是由轴承供应商提供的抛光钢球。它也可以是装饰物,半圆形的汽车轮毂帽。

图片

将球放置并固定在视野的中心。照明球的图像显示照明来自的方向。图像的捕获和归档为其他人检查视觉系统或复制视觉应用程序提供了一个基准。

图片

单点反射光表示单点光源。如果光以球为中心,则为轴上照明。

图片

对于环形光,无论是亮场还是暗场,抛光的球体都会显示出一圈光。

图片

同轴漫射照明产生一个独特的反射抛光球体。

09

基准照明均匀性

使用用于基准照明强度和相机相同的设置,捕捉图像。重要的是,背景材料尽可能均匀,没有纹理可由相机分辨。此外,许多视觉系统甚至一些相机都提供了一种常被称为“平场校正”的功能,它可以补偿图像的不均匀性,如果此功能可用并在视觉系统中使用,则必须为此基准禁用该功能。但是,如果在应用程序中可用并使用了平面校正,那么也可以在启用平面域校正的情况下执行此基准测试,这将是非常有用的。

图片

此图像的一些统计数据应该为您的图像记录:

最小灰度值=52

最大灰度值=187

平均灰度值=143

获取的图像必须准备如下:

  • 如果使用彩色图像,则将彩色图像转换为灰度。     如果颜色一致性是一个问题,您可以对红色、绿色和蓝色通道分别执行此过程。

  • 对图像进行低通滤波器,尽可能消除图像噪声。由于你正在寻找逐渐变化的光强,低通滤波可以是有益的。

生成一个伪彩色图像,其中每个特定的灰度范围(例如255-251、250246、245-241等。) 被一种特定的对比颜色所取代。如果视觉系统不能创建伪彩色图像,则可以使用PhotoShop等程序进行离线处理。

图片

如果生成伪彩色图像太复杂,或者该领域的技术人员无法实现,则可以创建显示等高线的图像如下:

  • 低通滤波图像。

减少图像中灰度值的数量(例如,将灰度值的数量从256减少到128或64)。即使经过滤波,在1像素的范围内也有如此大的变化,结果将是很小的价值。

  • 创建被过滤和抽取的图像的副本。

  • 腐蚀(或膨胀)图像副本。     使用3x3结构元素的简单侵蚀(或膨胀)是足够的。

  • 取两幅图像的绝对差值。     这个结果将是一个几乎纯黑色的图像。阈值为1的差分图像。结果将显示等高线(均匀强度的轮廓)。

图片

上图显示图像等高的处理结果。等高线相距4个灰度级。

如果你了解机器视觉技术,你可以理解图像中出现的不均匀性可能主要是由于光照的不均匀性,但它也受到诸如余弦等透镜效应的影响(渐晕),以及由图像传感器的光响应不均匀性(PRNU)以及其他光学效应。

10

基准颜色

基准颜色对于彩色相机的机器视觉系统是必不可少的。对于单色机器视觉系统,基准颜色可能有助于量化光源特征。

如果你知道如何使用分光度计,那么这些仪器可以很好地量化照明颜色。对于大多数机器视觉从业者来说,这些仪器是不可用的。这些仪器只测量光源,不考虑镜头或相机的图像传感器。

对于单色视觉系统,照明光源可以是宽带(例如白色)或窄带(例如红色LED)。基准颜色的挑战是,通过基准测试,确保使用相同的“白色”光或相同的“红色”光。许多单色视觉系统不受照明光谱的某些变化的影响,也没有理由对照明光源颜色进行基准测试

对于彩色视觉系统,获取商业彩色图表的图像。从图表的图像中,注意每个相关颜色的颜色坐标(例如R值、G值和B值)。最好使用最适合您的视觉应用程序的颜色系统。因此,您可以选择RGB、CYMK、L*a*b*或其他用于记录值的系统。

图片

对于单色成像应用,仍然有一种实用的方法来规范照明颜色。将一个颜色目标,如Greytag/Macbeth ColorChecker图表(参见上面的图24)放置在视野中易于重复放置的位置。给图表拍张照片。记录每个彩色方块的灰度。虽然这并不能确定任何特定的颜色或光的波长分布,但它确实提供了一个合理的基准度量来确定照明颜色的变化。

11

基准失真(畸变)

失真是由放大倍数的变化引起的。这些变化可能是由于透镜的特性导致放大率从图像的中心向外变化(即枕形和桶形失真)。它也可能是由于透镜的主平面、图像平面(图像传感器)和物体平面(视场)不平行导致透视失真。

失真的特征参数通常是获取测试图形的图像,如下图所示的点模式或棋盘模式。

点的中心的位置(或正方形的棋盘图案)是通过图像测量的。如果视觉系统提供这些测量,则测量畸变要容易得多,大多数机器视觉软件包提供畸变校正

畸变的特征参数是从图像中心到图像角点(以像素为单位)的成像和真实间距的差值除以从图像中心到对应点应该在哪里(以像素为单位)的真实间距的比值)。即:

𝐷𝑖𝑠𝑡𝑜𝑟𝑡𝑖𝑜𝑛 (𝑖𝑛 %) = 100 𝑥 (𝐼𝑚𝑎𝑔𝑒𝑑 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒 − 𝑇𝑟𝑢𝑒 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒 )/𝑇𝑟𝑢𝑒 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒

请注意,用于基准测试的获取和处理的图像不能被机器视觉软件纠正畸变。许多视觉系统进行了这种校正,如果使用,则必须禁用此基准。

12

图像噪声

图像噪声是由许多现象引起的,如照明变化

在视野中放置一个目标。虽然这个目标可以是任何东西,一个均匀的中性灰色,给出一个相当明亮的图像,在图像的任何地方不饱和工作最好。取一对图像。这两幅图像相减,计算得到的图像中像素值的均方根值(RMS);这是图像噪声。 

图片

两幅图像(噪声)差异的表面图

信噪比为两幅图像的平均亮度除以RMS。

13总结

本文所描述的基准是在工作良好的视觉系统上执行的,那么如果视觉系统需要维护,或者再现视觉系统的成像,维护技术人员或视觉工程师可以按照基准记录文档及SOP执行他们的任务,保证他们将视觉系统恢复或构建到与早期合格的视觉系统相当的性能。

文章转自:机器视觉课堂 

声明:转载此文目的在于传递更多信息,仅供读者学习、交流之目的。文章版权归原作者所有,如有侵权,请联系删除。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unknown column ‘project_name‘ in field list。表示数据库中没找到你要查得或者插入的‘project_name’字段。

Unknown column project_name in field list。表示数据库中没找到你要查得或者插入的‘project_name’字段。

ftrace工具学习笔记

ftrace是一个功能强大的Linux内核跟踪工具,可用于分析内核的行为和性能问题。它可以用来收集各种内核跟踪数据,如函数调用、内存分配、中断处理等。以下是ftrace的一些主要特点和用法: ftrace是内核自带的跟踪工具,因此无需安装。…

服务器和云服务器哪个更安全?

随着云计算技术的不断发展,越来越多的企业开始选择使用云服务器来存储和处理数据。然而,对于一些企业来说,他们可能更倾向于使用传统的服务器。在这种情况下,安全性成为了一个重要的考虑因素。那么,服务器和云服务器哪…

代码随想录算法训练营第22天 | 235. 二叉搜索树的最近公共祖先 , 701.二叉搜索树中的插入操作 , 450.删除二叉搜索树中的节点

二叉树理论基础: https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 235. 二叉搜索树的最近公共祖先 题目链接:https://leetcode.cn/problems/lowes…

vue3-内置组件-Transition

基于状态变化的过渡和动画(常用) 建议多看几遍~~。然后动手去写写,学编程只有多动手才能有感觉。 内置组件: 它在任意别的组件中都可以被使用,无需注册。 Vue 提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动…

AMH面板如何安装与公网远程访问本地面板界面

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

Mac版Idea实用快捷键+使用技巧

快捷键 全局查找 shift command f 查找类(class) command o 查找classfilesymbolaction 点击两次shift 复制当前行 command d 自动代码提示 option enter 代码格式化 option command l 生成代码(构造函数、Getter/Setter方法、equals方法、hashCode方法、…

VLM 系列——Llava1.6——论文解读

一、概述 1、是什么 Llava1.6 是llava1.5 的升级暂时还没有论文等,是一个多模态视觉-文本大语言模型,可以完成:图像描述、视觉问答、根据图片写代码(HTML、JS、CSS),潜在可以完成单个目标的视觉定位、名画…

这一年让我印象深刻的bug --外部接口请求失败问题

1 业务场景 我们有个需求是外部客户需要在我们系统创建一个账号。业务流程如下 但是我们运行一段时间后发现一个问题,有客户反创建客户账号时,提示账号已经存在,但是我们系统却查不到单号 2 问题分析 经分析报错来源于权限系统,我…

学习Spring的第十五天

spring aop动态代理开发 一、什么是动态代理 动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的方法进行功能性增强的一种技术。在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象…

基于JavaWeb开发的火车售票系统[附源码]

基于JavaWeb开发的火车售票系统[附源码] 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 &#x1f4dd…

XCTF:3-1[WriteUP]

从题目中获取文件 使用file命令查看文件类型 修改后缀为.rar后进行解压缩 再次使用file命令查询该文件的类型 再次修改后缀为.pcap或者.pcapng 使用wireshark打开,直接搜索flag字样 在多个数据包里发现了flag.rar、flag.txt等文件 尝试使用http导出文件 有一个fl…

Sui上TVL突破5亿美元,位列DeFi榜单前十名和最活跃链前五名

2023年Sui上DeFi协议迅速增长,2024年这一势头仍在继续,根据DeFiLlama报告Sui上TVL近期超过5亿美元。在不到一年的时间里就达到这个金额,得益于Sui的突破性指标,比如其峰值TPS接近6,000。 Sui TVL突破5亿美元,登上DeFi…

超多制作模板的姓氏头像生成器微信小程序源码

超多制作模板的姓氏头像生成器微信小程序源码,这是一款姓氏头像制作小工具,内含丰富多样的模板提供制作。 以前的基本是固定位置生成,这款制作支持拖拽调整位置,自定义颜色,阴影等等。

第三百零八回

文章目录 1. 概念介绍2. 实现方法2.1 文字信息2.2 红色边框 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现密码输入框"相关的内容,本章回中将介绍如何在在输入框中提示错误.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们…

【 buuctf-另外一个世界】

flag 就隐藏在这一串二进制数中,可以利用在线工具转换得到 flag,本次讲一下用代码怎么转换。将二进制数转换成 ascii 字母,手写的话两种思路: 1.将二进制数四位一组先转成十六进制数,再将十六进制数两位一组&#xff…

L1-023 输出GPLT-java

输入样例: pcTclnGloRgLrtLhgljkLhGFauPewSKgt输出样例: GPLTGPLTGLTGLGLL 思路 设置一个GPLT的计数器 然后遍历的时候每次对计数器的个数减一 import java.io.*;public class Main {public static void main(String[] args) throws IOException {B…

ele-h5项目使用vue3+vite+vant4开发:第三节、自定义hooks-useToggle实现搜索页展示切换

需求分析 点击首页搜索框,出现搜索页点击搜索页,隐藏搜索页,展示首页新建搜索页组件实现效果 hooks介绍 理解 hooks 就是将去改变一个参数值时,页面也会更新对应的值的想法、抽象,用代码实现的地方 如何实现一个hooks 在src(sour…

c++阶梯之类与对象(中)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数概念的引出 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 特性 未使用构造与析构的版本 使用了构造与析构函数的版本 4. 拷贝构造函数 4.1 拷贝构造函数的概念 4.2 特性 结语 本节我们来认识…

Vue中keep-alive的作用、原理及应用场景

在进行Vue开发的过程中,我们经常会遇到需要进行组件缓存的场景,这时候Vue提供的keep-alive组件就派上了用场。keep-alive组件是Vue内置的一个抽象组件,它可以将其包裹的组件进行缓存,提高组件的性能,同时也可以节省服务…