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

news2024/12/31 6:42:52

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

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

  • 成像(相机和镜头)

  • 光照

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

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

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

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

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

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

  • 关键成像尺寸

  • 相机设置

  • 镜头设置

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

  • 影像视野

  • 成像(光学)分辨率

  • 景深

  • 光照强度

  • 照明方向

  • 照明均匀性

  • 颜色

  • 图像失真

  • 图像噪声

    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.coloradmin.cn/o/1434023.html

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

相关文章

LeetCode_19_中等_删除链表的倒数第N个结点

文章目录 1. 题目2. 思路及代码实现(Python)2.1 计算链表长度2.2 栈 1. 题目 给你一个链表,删除链表的倒数第 n n n 个结点,并且返回链表的头结点。 示例 1: 输入: h e a d [ 1 , 2 , 3 , 4 , 5 ] , n…

Stable Diffusion 模型下载:RealCartoon-Anime - V10

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 这个检查点是从 RealCartoon3D 检查点分支出来的。它的目标是产生更多的“动漫”风格,因为我喜欢动漫。:)我知道有很多人做得很好(比如aniw…

背景样式de七七八八

一,简介 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 1.1背景颜色(background-color) background-color:transparent/color; 默认值为transparent(透明的&#xff…

2024 RTE行业(实时互动行业)人才发展学习总结

解决方案 人才画像 开发者人才素质要求: 具备多个领域的技术知识注重团队合作,具备协作能力以用户为导向的用户体验意识具备创新思维和解决问题的能力需快速响应行业变化和持续的学习能力具备项目管理能力 学习和吸收新知识的渠道 RTE人才分类

Linux实验记录:使用BIND提供域名解析服务

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 为了降低用户访问网络资源的门槛&am…

SpringMVC速成(一)

文章目录 SpringMVC速成(一)1.SpringMVC概述2.SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行…

《短链接--阿丹》--技术选型与架构分析

整个短链接专栏会持续更新。有兴趣的可以关注一下我的这个专栏。 《短链接--搭建解析》--立项+需求分析文档-CSDN博客 阿丹: 其实整套项目中的重点,根据上面的简单需求分析来看,整体的项目难题有两点。 1、快速的批量生成短链,并找到对应的存储。 并且要保持唯一性质。…

解析qlib表达式引擎

定义基础类 import abc import pandas as pd import numpy as np import reclass Expression(abc.ABC):def __str__(self):return type(self).__name__def __repr__(self):return str(self)def __add__(self, other):return Add(self, other) # 重载运算符 def __radd__(sel…

数字孪生网络攻防模拟与城市安全演练

在数字化浪潮的推动下,网络攻防模拟和城市安全演练成为维护社会稳定的不可或缺的环节。基于数字孪生技术我们能够在虚拟环境中进行高度真实的网络攻防模拟,为安全专业人员提供实战经验,从而提升应对网络威胁的能力。同时,在城市安…

ONLYOFFICE 8.0 正式发布:开发者视角

ONLYOFFICE 8.0 正式发布:开发者视角 😊引言 🎉 一、ONLYOFFICE介绍🌟 二. 开发者版与企业版介绍ONLYOFFICE 文档开发者版ONLYOFFICE 文档企业版 🤓 三. 开发者的主要特点1.开源模式2.自主部署,保障数据安全…

算法day10

算法day10 20 有效的括号1047 删除字符串中的所有相邻重复性150 逆波兰表达式求值 20 有效的括号 拿到这个题的想法,首先我在想我能不能用数组的操作来扫描做。后来想想,如果这样做那特判也太多了,不好做。然后第二个想法就是用栈来做&…

[Python]MacBook安装pyenv多版本管理

对比之前文章提到过Go的多版本工具[每周一更]-(第54期):Go的多版本管理工具相应的经验,然后本地将python也配置下多版本切换,有助于项目的灵活切换; 以下展示用MacBook系统做个栗子;其他系统见末尾的参考; …

力扣热门100题刷题笔记 - 10. 正则表达式匹配

力扣热门100题 - 10. 正则表达式匹配 题目链接:10. 正则表达式匹配 题目描述: 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配&#xff…

echarts使用之地图(五)

1 基本使用 百度地图 API : 使用百度地图的 api , 它能够在线联网展示地图 , 百度地图需要申请 ak 矢量地图 : 可以离线展示地图 , 需要开发者准备矢量地图数据。本文使用该方式。 json格式的数据如下&#xff1a; 格式参照&#xff1a;GeoJSON <!DOCTYPE html&…

【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode:1883. 准时抵达会议现场的最小跳过休息次数 给你一个整数 hoursBefore &#xff0c;表示你要前往会议所剩下的可用小时数。要想成功抵达会议现场&#…

windows10忘记密码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C语言——O/动态内存管理

目录 一、为什么要有动态内存分配 二、malloc 和 free 1、malloc 2、free 三、calloc和realloc 1、calloc 2、realloc 四、常见的动态内存的错误 1、对NULL指针的解引用操作 2、对动态开辟空间的越界访问 3、对非动态开辟内存使用 free 释放 4、使用free释放一块动…

必看!第六版CCF(中国计算机学会)推荐A类国际学术会议!

中国计算机学会 中国计算机学会&#xff08;CCF&#xff09;是全国性、学术性、非营利的学术团体&#xff0c;由从事计算机及相关科学技术领域的个人和单位自愿组成。作为独立社团法人&#xff0c;CCF是中国科学技术协会的成员之一&#xff0c;是全国一级学会&#xff01; CCF的…

JetPack Compose之Button使用指南

Jetpack Compose系列(8) - Button 跟View体系一样&#xff0c;Compose通过Button来显示按钮状态及响应相关事件等。官方表示其默认遵从Material Design设计理念。 OptIn(ExperimentalMaterialApi::class) Composable fun Button(onClick: () -> Unit,modifier: Modifier …

新数据不影响原来的数据

问题描述 新数据修改时&#xff0c;原来的数据也会受影响 const obj1 ref({ name: slx, age: 20 })const obj2 obj1obj2.value.name hhhhconsole.log(obj1, obj1.value)console.log(obj2, obj2.value)解决方法 (仅适用于对象 在这段代码中&#xff0c;obj1 和 obj2 指向同…