机器视觉相关硬件

news2025/1/19 23:06:38

机器视觉相关硬件

文章目录

  • 机器视觉相关硬件
  • 一、相机
    • 1. 相机的主要参数
    • 2. 相机的种类
    • 3. 相机的接口
    • 4. 相机的选型
      • 1.面阵相机的选型
      • 2.线阵相机的选型
  • 二、图像采集卡
    • 1. 图像采集卡的种类
    • 2. 图像采集卡的选型
  • 三、镜头
    • 1. 接口
    • 2. 最大靶面尺寸
    • 3. 物距与焦距
    • 4. 光圈
    • 5. 分辨率与成像质量
    • 6. 镜头倍率与视场范围
  • 四、光源
  • 五、实例:便件选型

完整的图像采集系统一般包括相机、镜头、图像采集卡、光源等。硬件的选型将关系到图像的质量和传输的速率,也会间接影响视觉软件算法的工作效率。硬件和软件需要配合得当,彼此互补。本文将介绍机器视觉的4个主要硬件的选型。

一、相机

做机器视觉项目的第一步就是图像输入,而图像输入离不开相机。相机是一种将现场的影像转化成数字信号或模拟信号的工具,是采集图像的重要设备。

1. 相机的主要参数

在开始选择相机之前,首先应对相机有基本的了解,这些基本信息在各厂商提供的产品页面上应该都有详细的介绍。接下来介绍与机器视觉相关的相机的主要参数。
(1)分辨率:一般用W×H的形式表示,W为图像水平方向上每一行的像素数,N为垂直方向上每一列的像素数
(2)像素尺寸:指每一个像素的实际大小,即传感器中像元的大小,单位一般是mm。在分辨率一样的情况下,像素尺寸越小,得到的图像越大。
(3)帧率:指相机每一秒钟拍摄的帧数。帧率越大,每秒捕捉到的图像越多,图像显示就越流畅。对于高速运转的机器,帧率应与物体的运动速度相匹配,这样才能保证捕捉到物体及其关键细节。
(4)像素深度:指色彩的丰富程度。一般来说,8bits 表示黑白图像,24bits表示彩色RGB图像,其中 RGB 图像有3个颜色通道,每一个颜色用8bits表示。这样一张图片能表示的颜色信息大概是2°×2°×2°-16777216种,图像色彩非常丰富。如果还有32bits 的选项,那么除了RGB各占用的8位外,还有一个8位是预留给透明通道a的,透明通道可以用来表现颜色的深浅强度和遮挡、透视等关系。总之,像素的深度值越大,图像的颜色信息越丰富,但相应的图像文件也越大。
(5)数字接口:相机的接口是用来输出相机数据的,一般有 GigE、USB2.0/3.0、CarmeraLink、FireWare 等类型。
图中是Uniforce Sales 网站上的IMPERX相机,在相机图像的右边列举了该相机的一些主要参数。
从图中中可以看到,该相机的类型(Camera Type)是面阵(Area);传感器类型(Sensor Type)是CCD;芯片尺寸(Sensor Size)是43.3mm;镜头接口(Mount)有C、EOS、F、M42几种类型;分辨率(Resolution)非常高,大概能达到29MP:数据接口(Interface)是CameraLink,因为高分辨的图像只能用功能最强的传输方式;色彩模式(Color/Mono)是单色(Monochrome);帧率(Frame Rate)小于10fps,最大帧率(Max Frame Rate)为4.7fps,这也与高分辨率有关。该相机适用于需要超高清图像,对图像细节有高要求,同时还需要高灵敏度的应用场景。
在这里插入图片描述

2. 相机的种类

相机按传感器的像素排列方式分,可以分为面阵相机和线阵相机。
面阵相机是将图像以整幅画面的形式输出。一般需要直观地表达整个场景画面时可以选择面阵相机,如需要识别物体、进行空间测量及静态物体特征检测的场合。常用的应用领域如交通运输、安全监控、医疗检测等。
线阵相机是将图像逐行输出,图像宽度与面阵相机无异,但高度只有1像素。这样的图像输入到图像处理模块之后,由软件端根据需要的画面宽度进行截取,并重新拼接出整幅画面的内容。线阵相机非常适合检测图像区域是条形或者高速运动的物体,可用于检测工业高速传送带上的对象。
相机按感光芯片的技术分,可以分为CMOS和CCD。关于CMOS与CCD的区别与技术细节的参考资料已经非常多,这里不再赘述,在选购相机时可以向专业人士咨询更详细的解释。笔者的看法是,根据项目的应用需求进行选择。例如,在弱光低速的检测环境下可以选择CCD,有助于获得更丰富的图像细节;若追求高性价比、高成像速度和成像质量,可以选择新式的CMOS。
相机按色彩分,又可以分为黑白相机和彩色相机。机器视觉使用的相机,除了需要检测颜色的情况外,一般选黑白相机更高效。因为图像处理多数是在黑白图像上进行的,即使采集了彩色图像,输入到软件处理模块后也要先转为黑白,再进行后续处理。因此,可以直接选择黑白相机。

3. 相机的接口

在选择相机时,还有一个重要的考虑因素是相机的数据传输接口。接口是相机将图像数据输出的一种方式,一般使用如下几种接口。
(1)GigE 接口:俗称“网口”,利用网络传输图像数据,适合远距离的传输。这类接口要与千兆网卡搭配使用。
(2)USB 3.0:USB3.0已经逐渐开始普及并有取代USB2.0的趋势,利用USB3.0接口可以高效率地传输数据。与USB2.0相比,USB3.0的传输速度大大提高,此外还有USB口固有的即插即用、支持热插拔等优点。USB 3.0也有局限性,由于有CPU的参与,会占用一些系统资源,而且传输线长度有限,因此使用距离需要比较近。不过目前USB3.0的性能正在不断提高,在一些对速度和分辨率要求不是很高的情况下,USB3.0接口是一个不错的选择。
(3)Camera Link 接口:指图像采集卡接口。采集卡是一种独立的信号控制设备,具有传输速度快、支持高分辨率等优点。如果传输的图像比较大,速度要求比较高,或者是要触发和控制多部相机时,可以选用这种接口。
(4)Fireware 接口:主要用于连接嵌入式系统。
在选择数据接口时,可以综合考虑以下几个要点。
(1)传输带宽。根据图像分辨率可以算出单帧图像的大小,然后用图像尺寸乘以帧率可以推算出每秒需要传输的带宽。例如,一张5MB的图像,帧率为30fps,因此每帧的传输带宽应当不低于 150MB/s。由于 Fireware 的最大带宽能达到100MB/s,USB3.0最大能达到350MB/s,最快的是Camera Link,传输速率最高可达到 850MB/s(数据来自Basler 官网),因此可以选择USB3.0接口或者Camera Link接口。
(2)传输距离。一般近距离的传输选择范围会比较大,而如果传输距离比较远,如大于10m,就可以选择网口。
(3)即插即用要求。从使用方便的角度来看,可以选择网口或者USB3.0,这二者都比较便于移动。
(4)实时性要求。如果系统对实时性要求比较高,可以选择Camera Link、USB3.0或Fireware。
(5)成本。在上面介绍的这几种接口中,Camera Link接口需要独立的板卡,成本是最高的。

4. 相机的选型

选择相机之前,应明确系统对相机的需求、拍摄对象是什么,以及如何拍才能满足图像处理系统的输入要求。有了明确的需求之后,选型就会有清晰的方向。相机的选型主要看两点,一是类型,二是参数。
首先确定相机的类型,如选择面阵还是线阵,选择CCD还是CMOS,选择黑白还是彩色,这些完全取决于检测环境和物体的特性。前文在介绍相机分类时已有推荐,可以根据实际需要进行
选择。

1.面阵相机的选型

面阵相机的选型可考虑以下几个因素。
(1)帧率:单位是fps,指每秒钟采集的图像帧数。值得注意的是,相机的理论帧率与实际帧率仍有差别,这个数值会受到图像分辨率、曝光时长等多个因素的影响。因此,选择帧率的时候,也要考虑到其他因素的影响。
(2)分辨率:指单幅画面包含的像素数,一般用水平像素数乘以垂直像素数来表示。像素越高,画面越精细,但文件也越大。
(3)接口:指数据传输接口。接口的选择在上文已有介绍,应结合实际传输距离、速率要求、系统类型、成本等多个因素综合考虑,可选择Camera Link、GigE、USB3.0或硬件接口。
(4)靶面尺寸:指图像传感器的尺寸,如112"、1/3”、2/3"等。在分辨率固定的情况下,靶面尺寸越大,传感器的面积越大,图像的质量越好。靶面尺寸应与镜头匹配。
(5)黑白/彩色:根据图像处理的需求和传输需求选择是否需要用彩色。
(6)感光芯片类型:CMOS或CCD,根据需要选择。
(7)像元尺寸:指每个像素的实际大小。靶面尺寸固定的情况下,像元尺寸越小,水平或垂直方向的像素就越多,分辨率越大,画质越清晰。
(8)快门:指曝光的方式,可选的如全局快门(GlobalShutter)和滚动快门(Rolling Shutter)。前者是全局曝光,后者是逐行曝光。如果拍摄高速运动的物体,可以选全局快门,因为逐行曝光的滚动快门会产生畸变;如果拍摄静态的或低速的物体,可以选择滚动快门。

2.线阵相机的选型

评估线阵相机的参数时也要以实际需求出发,应确定以下信息。
(1)幅宽:成像区域的实际宽度。
(2)对精度的要求:对最小的可分辨单元的尺寸的要求。
(3)运动速度:待检测物体的移动速度。
确定了需求信息后,可以从以下几个方面进行选型。
(1)行频:行频的单位为kHz,可选范围一般为10~140kHz。行频为10kHz,表示1s扫描10000行图像数据。行频的选择取决于待检测物体的运动速度,速度越快,选择的行频应当越高。其具体计算公式应咨询相关专业人员。
(2)分辨率:可选范围一般为2~12k。分辨率的值可以根据幅宽和精度进行推算。
(3)像素尺寸:一个像素的实际大小,可以由幅宽除以单行的像素数量得到。
(4)数据接口:可选的接口有Camera Link或GigE。
(5)黑白/彩色:根据实际需求选择是否需要用彩色。如果检测中不需要RGB信息,则选择黑白相机更方便。
(6)感光芯片类型:CMOS或CCD,根据需要选择。
(7)镜头接口:镜头接口有标准C口、F口、V口等。接口的尺寸与靶面尺寸或者图像分辨案相关,应与镜头接口匹配。一般2k或2k以下的图像选择标准C口即可。
最后就是将符合条件的相机进行价格和服务的比较,选出适合的产品。

二、图像采集卡

图像采集卡的功能主要是将来自相机的模拟信号或数字信号转化为所需的图像数据流并发送到计算机端,是相机和计算机之间的重要连接组件。它同时还包含了相机采集控制的一些功能,可以对图像属性、采集控制等参数进行设置。图像采集卡的外观类似于一块板卡,安装在计算机的PCI(Pedpherd Component Interconnection,周边元件扩展接口)插槽中,如图所示。
德国 Silicon Software 公司的microEnable 5 marathon 型号的Camera Link采集卡在这里插入图片描述
对一些传输速率比较高的需求,图像采集卡是标准的选择,同时也适合高分辨率、高帧率的相机。对一些没有外触发功能的相机,使用采集卡可以方便地对相机进行控制。如果要搭载多个相机,如双目或多目的情况,也需要使用图像采集卡进行同步或异步控制。

1. 图像采集卡的种类

图像采集卡按接收信号的种类可以分为模拟信号图像采集卡和数字信号采集卡;按接口的适用性可以分为专用接口(如Camera Link、模拟视频接口等)采集卡和通用接口(如GigE、USB3.0等)采集卡;按支持的颜色可以分为彩色图像采集卡和黑白图像采集卡。

2. 图像采集卡的选型

选择图像采集卡之前,要明确项目的功能需求,如分辨率、传输速率等要求,以及相机的详细参数。
图像采集卡的选型应当与相机匹配,主要指以下几个方面的匹配。
(1)支持的接口模式:如Camera Link接口的相机支持的模式有Base模式、Medium模式、Full 模式,那么图像采集卡在选择时也应当与相机的模式匹配。在实际项目中曾发现,如果相机选择Base 模式,而图像采集卡选用Full 模式,会造成图像数据的丢失或缺色。
(2)支持的分辨率:在选择时应考虑图像采集卡的分辨率是否能满足输入图像的要求。
(3)其他:还应当考虑硬件的可靠性,如有没有过电压保护、散热性能如何等。除了硬件外,还要考虑配套软件的易用性。图像采集卡一般都有配套的开发包,如SDK、开发平台等,可根据开发者的经验和偏好进行选择。

三、镜头

镜头是与相机配套使用的一种成像设备。选择相机之后,就可以考虑选择合适的镜头了。为了使相机与镜头相匹配,还需要了解镜头的一些参数。
镜头的参数有很多,机器视觉项目选型要关注的镜头参数主要包括以下几种。

1. 接口

接口是镜头与相机的机械连接方式。镜头的接口应与相机的物理接口相匹配。例如,相机的接口是C口,镜头也应选择C口。还有F口、CS口、S口等接口,不同的接口是为了适应不同的相机芯片尺寸。

2. 最大靶面尺寸

最大靶面尺寸也称芯片尺寸。镜头使用的芯片尺寸应与相机的传感器靶面尺寸相匹配,简单来说,就是镜头投射的图像面积应不小于相机的芯片尺寸,这样通过镜头捕捉到的图像就能够刚好覆盖相机传感器的区域。镜头的供应厂商一般会提供匹配的芯片尺寸。

3. 物距与焦距

物距是目标对象距离相机的距离。焦距表示相机到焦点的距离,镜头的焦距分为固定的和可变的两种。如果物距很大,可以选择焦距比较长的镜头,这样拍得更清晰,但是视野范围也会变小。因此,可以根据物距和视场的范围来确定焦距。当视觉项目中的设备需要固定时,应尽可能选择定焦镜头,成像会比较稳定。

4. 光圈

光圈的值关系到光线进入相机的量。光圈越大,进入相机的光线也越多。对于光线比较暗的场合,可选用大一点的光圈。

5. 分辨率与成像质量

镜头的分辨率越高,成像越清晰。分辨率的选择,关键看对图像细节的要求。同时,镜头的分辨率应当不小于相机的分辨率。

6. 镜头倍率与视场范围

镜头倍率即放大倍数,这个值与被测物体的工作距离有关,要根据放大需求决定。选择镜头时,可以参考以下步骤。
(1)确定相机连接镜头的接口类型,如C口或F口等,这个接口决定了镜头的接口。
(2)确定镜头的最大靶面尺寸与相机相匹配。
(3)确定焦距。首先测量工作距离和目标物体的大小,得到图像的宽或高;然后确定相机的安装位置,从相机的拍摄角度推测视角,最后根据二者的几何关系计算相机的焦距。
(4)根据现场的拍摄要求,考虑光圈、价格等其他因素。

四、光源

光线对机器视觉至关重要,光线的变化不但会影响到硬件设备的选型,也会影响到图像处理算法的选择。因此,有时需要屏蔽一些光线变化,有时需要增加照明或调整打光方式。如果工作环境光线不充足,则需要补充光源。
光源的种类很多,市面上常见的有LED光源、红外光源、激光光源、卤素灯等。按形状分,光源有环形光源、背光源、点光源等。选择光源时,应根据检测的目标物体和检测要求决定如何打光以及选择何种光源。例如,如果要突出被测物体的结构细节,可以使用正面或者正侧面光源;如果要凸显物体的轮廓,可以使用背面光源。在选择和布置光源时,应根据检测的对象和希望呈现出
的画面效果进行设计。
除了可见光外,某些情况下也需要使用红外光源。例如,某眼球追踪项目需要捕捉瞳孔位置,
这时就应该选择红外光源,这样光线不可见,不会对测试者造成干扰。
在选择光源时,应尽可能地到客户现场进行测试,感受实际应用场景中的光线需求。结合图像
处理的算法需求,选择合适的光源产品。

五、实例:便件选型

下面以一个例子说明相机的选择方式。例如,需要在一个城市的路口安装交通监控相机,用于
捕捉超速车辆并提取车牌等车辆信息,那么选择相机时可以按下面的思路进行分析。
(1)选择面阵相机还是线阵相机?因为要拍到全局图像进行分析,所以选择面阵相机。
(2)选择彩色相机还是黑白相机?由于需要识别车型和拍照,因此可以选择两个相机,一个黑白相机用于抓拍,一个彩色相机用于识别车型车貌。
(3)选择CCD相机还是CMOS相机?在这种应用场景下,车辆速度极快,因此相机也需要极高的成像速度、高清分辨率,功耗也要尽可能低,因此可以选择新式CMOS相机。
(4)分辨率:根据实际图像幅宽与精度要求推算,一般1920像素×1080像素的图像就可以满足需求了。
(5)帧率:由于城市车辆超速的判断标准比较低,因此30fps的帧率就足够拍到超速车辆了。(6)数据接口:根据分辨率和帧率计算出传输带宽,再结合传输距离、安装条件、成本预算等因素选择合适的数据接口,如USB3.0接口、Camera Link接口或GigE接口等。
(7)镜头与光圈:镜头的接口应与相机相匹配。由于白天与黑夜的光照变化大,因此可以考虑选择自动光圈。
(9)其他需求:如灵敏度、背光补偿、自动曝光,以及是否可以平衡周围环境光线对拍摄的影响等需求。
(8)快门:拍摄高速运动的物体应选择全局快门,滚动快门可能会产生图像的畸变。
综合以上选择,再结合成本、品牌偏好等因素,就可以在各厂商的产品页上筛选出合适的设备了。

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

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

相关文章

使用Python构建微服务

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 本文旨在概述基于微服务的架构的基础知识,并学习如何使用 Python 构建微服务。 什么是基于微服务的架构? 它是一种架构风格,将…

基于uibot知网文论采集机器人设计与实现

摘要 人工智能技术的不断更新迭代为财务数据自动化处理带来了新的机遇和挑战,如何通过人工智能等新兴技术来优化现有的财务流程, 创造更多的企业价值,成为财务信息自动化处理是目前的重点研究方向。机器人流 程自动化作为一种新型的自动化技…

Shell三剑客:awk(awk编辑编程)六

一、AWK 的函数前言 awk的函数有许多,除了系统自带的内建函数还有就是用户自定义的函数。 二、AWK 常用的函数 rand() # 返回0 和1 之间一个随机数srand() # 生成随机数种子int() # 取整数length([s]) # 返回指定字符串的长度sub(r,s,[t]) # 对t字符串进行搜索&am…

攻防世界easyphp解题

攻防世界easyphp解题 <?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die(&q…

PAT 乙级 1039 到底买不买

解题思路:此题用c语言的话可以直接hash去求比较简单&#xff0c;首先求出各个颜色的个数&#xff0c;一比对就可以了&#xff0c;python我利用了字典和集合 c语言代码: #include<stdio.h> int main() {char a[1001],b[1001];int surplus0,miss0;int a_c[128]{0};int b_…

【HarmonyOs Arkts笔记】Arkts ForEach循环使用

说明 ForEach循环数组对象时 要指定对象的唯一标识 例如 id&#xff0c;否则只会显示第一个 State tabsList: object[] [{ name: 砍价活动, id: 1, icon: https://php-b2c.likeshop.cn/uploads/images/2022062414322367e6a5479.png },{ name: 拼团活动, id: 2, icon: https:…

GBASE南大通用-GBase 8s分片表操作 提升大数据处理性能

目录 一、GBase 8s分片表的优势 二、六种分片方法 轮转 1.轮转法 基于表达式分片 2.基本表达式 3.Mod运算表达式 4.Remainder关键字方式 5.List方式 6.interval 固定间隔 三、分片表的索引 1.创建索引的注意事项 2.detach索引替代delete功能展现 3.在现有分片表上增加一个新…

二叉树顺序结构与堆的概念及性质(c语言实现堆)

上次介绍了树&#xff0c;二叉树的基本概念结构及性质&#xff1a;二叉树数据结构&#xff1a;深入了解二叉树的概念、特性与结构 今天带来的是&#xff1a;二叉树顺序结构与堆的概念及性质&#xff0c;还会用c语言来实现堆 文章目录 1. 二叉树的顺序结构2.堆的概念和结构3.堆…

高光回眸:阿里云容器服务如何全面助力精彩亚运

作者&#xff1a;刘佳旭 谢乘胜 贤维 引言 2023 年&#xff0c;第 19 届杭州亚运会在杭州成功举办。在亚运之光和科技之光的交相辉映下&#xff0c;这届亚运会成为亚运史上首届“云上亚运”&#xff0c;用云计算创造了历史&#xff0c;赛事核心系统和转播全面上云&#xff0c…

leetcode贪心算法题总结(三)

本章目录 1.合并区间2.无重叠区间3.用最少数量的箭引爆气球4.整数替换5.俄罗斯套娃信封问题6.可被三整除的最大和7.距离相等的条形码8.重构字符串 1.合并区间 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>&…

图像的颜色及Halcon颜色空间转换transfrom_rgb/trans_to_rgb/create_color_trans lut

图像的颜色及Halcon颜色空间转换 文章目录 图像的颜色及Halcon颜色空间转换一. 图像的色彩空间1. RGB颜色 2. 灰度图像3. HSV/ HSI二. Bayer 图像三. 颜色空间的转换1. trans_from_rgb算子2. trans_to_rgb算子3. create_color_trans_lut算子 图像的颜色能真实地反映人眼所见的真…

地震烈度速报与预警工程成功案例的经验分享 | TDengine 技术培训班第一期成功落地

近日&#xff0c;涛思数据在成都开设了“国家地震烈度速报与预警工程数据库 TDengine、消息中间件 TMQ 技术培训班”&#xff0c;这次培训活动共分为三期&#xff0c;而本次活动是第一期。其目标是帮助参与者深入了解 TDengine 和 TMQ 的技术特点和应用场景&#xff0c;并学习如…

Github 2023-12-30 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-30统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目4JavaScript项目2C项目1Python项目1Java项目1HTML项目1Dart项目1非开发语言项目1 令人惊叹的 …

(001)Unit 编译 UTF8JSON

文章目录 编译 Dll编译报错附录 编译 Dll 新建工程&#xff1a; 注意 UnityEngineDll 的选择&#xff01;2022 版本的太高了&#xff01;&#xff01;&#xff01; 下载包&#xff0c;导入unity : 3. 将 unf8json 的源码拷贝到新建的工程。 4. 编译发布版本&#xff1a; 编译…

浅层神经网络时间序列预测和建模

目录 时间序列网络 NARX 网络 NAR 网络 非线性输入-输出网络 定义问题 使用神经网络时间序列拟合时间序列数据 使用命令行函数拟合时间序列数据 选择数据 选择训练算法 创建网络 准备要训练的数据 划分数据 训练网络 测试网络 查看网络 分析结果 闭环网络 向…

数据的复制

基本概念 数据的复制指的是通过网络链接的多台机器保留相同的副本 为什么要进行数据的复制 使得用户和数据在地理上比较接近&#xff0c;因为大数据要求我们将计算安排在数据存放的位置和我们基本的内存模型不是很一样 &#xff0c;比如磁盘调入内存之类的。即使系统的一部分…

XTU-OJ-1452-完全平方数-笔记

参考博客 XTU-OJ 1452-完全平方数 题意 输入一个奇数&#xff0c;使得 n*(2*an-1)/2是一个完全平方数&#xff0c;求满足条件的最小的a 1<n<1e9 先输入样例数&#xff0c;再输入n 输入 2 1 3 输出 0 2 代码 #include<stdio.h>#define N 1000000010int a…

C#多条件排序OrderBy、ThenBy

方法和效果 有多个排序条件&#xff0c;其实不用单独自己写排序方法的&#xff0c;C#内置了排序方法&#xff1a; 引用命名空间System.Linq 正向排序的方法&#xff1a;OrderBy首要条件&#xff1b;ThenBy次要条件&#xff0c;可以连续多个使用 同理&#xff0c;逆向排序对应…

three.js绘制网波浪

无图不欢&#xff0c;先上图 使用方法&#xff08;以vue3为例&#xff09; <template><div class"net" ref"net"></div> </template><script setup> import { ref, onMounted } from vue import NetAnimation from /util…

面向搜索引擎优化初学者的 Google PageRank

即使你认为搜索已经摆脱了 PageRank 的影响&#xff0c;但时至今日&#xff0c;PageRank 很可能仍然存在于许多搜索巨头的系统中。 PageRank 曾经是搜索的核心&#xff0c;也是谷歌成为今天这个帝国的基础。 即使你认为搜索已经脱离了 PageRank&#xff0c;但不可否认的是&am…