当前位置: 首页 > news >正文

运动目标检测方法的概述

目录

① 光流法

② 帧差法

③ 背景差分法

④ 混合高斯模型法

⑤ 总结


运动目标检测技术的应用十分的广泛,尤其是在智能视频监控领域。运动目标检测为后续的图像处理等操作提供了基础,在某种程度上,决定了整个系统的性能。运动目标检测(Moving Object Detection)就是要判断视频序列中运动目标是否存在,若存在的话,要确定运动目标的位置。运动目标检测的目的是从视频序列中将变化区域(前景目标区域)从背景中提取出来,运动区域的有效分割对于目标分类、跟踪和行为分析等后期的处理是非常重要的

运动目标检测根据图像传感器是否运动可以分为两种情况。第一种情况是在静态背景下的运动目标检测。在这种情况下,图像传感器相对于它的视场是静止的。第二种情况是在动态背景下的运动目标检测。在这种情况下,图像传感器会根据需要跟随运动目标运动或者转动。

    对于固定视频图像传感器的这种情况,背景建模是解决检测运动目标的有效方法。由于获取背景图像最简单的方法就是在场景没有运动目标存在的情况下进行,但在某些实际应用场合中无法满足这种要求。背景中可能含有轻微扰动的对象,比如树枝、树叶的摇动现象,光线的变化,室内开灯和关灯的操作等都会对运动目标检测的结果产生一定的影响,前景目标的阴影也可能被检测为运动目标的一部分等一系列的问题,使得背景建模成为一项非常困难的工作。运动目标的检测方法有光流法、帧差法、背景差分法、单高斯模型法和混合高斯模型法。

① 光流法

光流法(optical flow)是三种传统的运动目标检测算法之一。光流有运动(速度场)、带光学特征的部分和成像投影三个要素,其中运动是形成光流的必要条件

在物体运动的时候,在图像上对应物体的亮度模式也随之运动,所以称光流是图像亮度模式的视在运动。光流描述了相邻帧之间的变化信息,它能准确的定位出图像传感器与前景目标之间的位移信息。光流法分为基于频域的方法、基于能量的方法、基于匹配的方法和微分法四种。微分光流法包括光流基本方程和光流计算方法两个部分,其中,光流基本方程是微分光流法的基础。

光流场法用于运动目标检测的基本思路是:首先从图像传感器收集到视频序列中选择相邻的两帧作运动估计,得出两帧中存在的运动矢量。然后通过上述得到的运动矢量进行目标的分割,并且对上述分割的结果进行相应的后期处理,包括去噪处理和小区域融合等等。接着计算出融合后的区域数量。如果存在不同的区域,可以判断出序列中存在着运动的目标;如果没有不同的区域,则说明场景中不存在运动的目标。

假定I(x, y, t)表示t时刻像素点(x, y)的灰度值,u(x, y)v(x, y)表示点(x, y)在水平方向上和垂直方向上的速度分量,用U = (u, v)^{T}表示光流场,t + dt时刻,(x+dx, y+dy)处的灰度值为I(x+dx, y+dy, t+dt),根据连续不变性,则有如下公式:

将上述的公式用泰勒公式展开,可得出如下的公式。

忽略二阶无穷小项,可得出公式,如下所示。

 将u = \frac{dx}{dy},v = \frac{dy}{dt}带入上述公式,可得到如下公式。就是著名的光流场约束方程。

光流场U = (u, v)^{T}中包含两个未知量,所以还需要一个方程才能求出这两个变量。于是引入了另一个约束条件来帮助求解,这个约束条件称为全局平滑约束假设条件,假设条件为光流在整个图像上光滑变化(速度的变化率为零)。在1981年也引入了一个约束条件来帮助求解,这个约束条件称为局部平滑性约束。由于引入的约束条件不同,所以产生的光流分析法则是不同的。上述的两种典型的算法分别为H.S算法和L.K算法。

得到运动目标的光流(速度)是光流法的核心。光流法的优点在于检测精度高,适合做精确分析。能检测出独立的运动目标,而不需预知场景的任何信息,并且对变化的复杂背景的情况有较好的适应能力,对目标的颜色信息不敏感。同时,缺点也很明显,因为引入了光流方程、约束条件、一阶偏导等多个复杂的方程式,导致光流法计算量庞大,计算速度慢,对处理机等硬件要求就会相应地提高另外,由于该算法中采用了假设的局限性,所以光流法对背景中存在的噪声较为敏感,容易出现误检等现象。

对光流法的改进主要有对光流法本身的改进和将光流法与其他的方法相结合的改进两种。

② 帧差法

帧差法(frame difference)是传统的运动目标检测算法之一。帧差法的基本思想是:利用视频序列图像的相邻帧间的强相关性,将当前帧图像与参考图像(前一帧序列图像)的差别来获得运动目标的方法,如相邻帧差法、帧间差分法。

帧差法最简单的就是相邻帧差法,做差分的量可以为灰度、饱和度、亮度等等。基本算法是将前一帧图像作为参考图像,假设t时刻的图像帧灰度图像为I(x, y, t),它的前一帧图像的值为I(x, y, t-1),定义两帧图像之间的差为D(x, y),如下公式所示。

然后设置一个阈值T,该值的选定直接决定着检测结果的好坏。接着对D(x, y)进行二值化处理,如下所示, d(x, y) = 1对应的像素点为前景点,否则为背景点。 

通过帧间差分法将图像中的运动目标和背景区域分开来,阈值的选取很重要。

如果阈值选择的过大,就有可能将属于运动目标的像素错误地划分为背景像素进而造成漏检,并且检测出的运动目标实体内很可能会有很大的“空洞”。反之,如果阈值选择的过小,就有可能将属于背景的像素点错误判别为运动目标的像素点从而造成误检,并且检测结果中会有大量的噪声出现。因此,应该通过多次地进行实验进而来选择和确定合适的阈值。

帧差法具有较低的时间复杂度,运算简单等特点,但是它也存在一定的局限性。例如,提取出的运动实体内部会产生“空洞”现象,这种方法检测出来的运动区域大小与运动目标的速度有有一定的关系。当运动目标匀速运动的时候,帧间差分法检测的结果会与实际相一致。当物体运动缓慢的时候,相邻帧间的运动目标移动的距离就会较小,检测结果和实体差不多,但是如果慢到一定程度的话,就会检测不到运动目标。相反,如果物体运动的速度很大,检测到的运动区域相应的就会变大,进而造成误检,影响最终运动目标的检测的结果。

帧差法的优点在于对场景中的光线渐变不是很敏感,适用于动态变化的环境中,实时性能较好,并且运算量小,则计算速度快。同时,帧差法的缺点是无法检测静止不动的物体,一般不能完整地提取出运动目标区域,在运动实体内容易产生“空洞”的现象,从而不利于下一步的分析和处理。

针对帧间差分法的不足之处,有很多的改进和优化的算法被提了出来,如三帧图像差分法、四帧差法和多帧差法等等。其中,三帧差分法充分地考虑了运动像素在时间上的相关性,该方法对随机噪声有很好的抑制作用和效果,对动态检测较为灵敏,但是也有差分图像检测的阈值需要手动进行预先设定好的缺陷。

③ 背景差分法

    在背景静止不变的情况下,背景差分法是目前应用最广泛最常用的一种算法。背景差分法利用当前视频帧与背景建模图像进行差分并通过选取设定合适的阈值来进行二值化处理,进而得到前景目标。优点是能较完整的提取出运动目标,缺点是对光照和外部条件造成的环境变化等过于敏感,常常会将运动目标产生的阴影错误地检测为其自身的一部分从而造成误检。由于时间的流逝,实际场景的多种因素都会在一定程度上发生了变化,比如停留物的出现、光线等的变化、开灯和关灯、运动目标对背景的遮挡等等,因此背景需要得到实时而准确地更新,这是影响背景差分法检测效果的一个非常重要的因素。

虽然背景差分法背景建模方法各异,但是进行运动目标检测的流程大致是相同的,主要有图像的预处理,背景建模,前景目标的检测和图像的后处理等几个步骤

  • 图像的预处理,对图像进行包括频域变换或者滤波处理等操作用以衰减图像的噪声,在某些特殊的情况下,还要对图像进行格式转换,进而为后续的操作做准备;
  • 背景建模和模型的更新,根据某一个背景建模的原理进行背景建模。由于场景不是静止不变的,所以需要对背景模型进行相应地更新,以保证背景模型能在运动目标检测过程中一直是准确有效的。因此,背景模型的更新在整个运动目标检测过程中有着很重要的地位;
  • 运动目标的检测,利用输入的图像和背景模型的差异来判断所输入的图像中是否存在运动目标。输入的图像与背景模型差别较大的像素点被判定为前景点,而差别较小的像素点被判定为背景点
  • 图像的后处理,上述处理后的结果中一般会存在噪声和阴影等不被期待的区域,为了得到准确的运动目标区域,所以进行相应的后处理操作。

背景差分法的基本思想是:首先利用不包含运动目标的图像帧来建立背景模型,然后利用包含运动目标的当前图像帧和事先得到的不包含运动目标的背景模型来进行差分运算,得到的差分图形用预先设定好的阈值进行二值化处理,进而就可以得到运动目标区域。差分的结果大于预先设定好的阈值的像素点置为“255”,即为前景点。否则,差分结果小于设定的阈值,则像素点置为“0”,即为背景点。

假定f_{b}(x, y)是背景图像,f_{k}(x, y)是当前帧图像,T为预先设定好的阈值,该阈值的选定直接决定着检测结果的好坏。g_{k}(x, y)是进行差分后的结果图像,则背景差分法的数学表达式如下述公式所示。 

经典的背景模型可以分为两类:一类为单背景模型(用一个概率分布表示背景此刻所处的状态),。另一类为多背景模型(使用多了分布表示背景所处的不同模态),如混合高斯模型、非参数内核模型等方法。

(1)统计平均法

统计平均法是通过对连续的图像序列进行平均来获得背景图像的。首先初始化一个背景模型,该背景模型的尺寸大小均与视频帧的尺寸大小相同。背景模型中的初始像素值均设置为0,然后对视频的前若干帧中所处相同位置的像素值加和之后求均值,将这个求得的平均值赋给背景模型中相应位置上的像素点,公式如下所示。

式中,L为进行平均的图像帧数,通常,L的值越大,得到的背景图像则更接近实际背景的估计值。

因为单高斯模型法的运动目标检测的快速性和相对准确性,所以被广泛采用。单高斯模型是一种比较经典的基于概率分布,并且适用于背景单一不变的场合的背景提取的方法。单高斯模型的建模过程包括建立背景模型、运动目标检测、更新模型三个方面

(2)单高斯背景模型

单高斯背景模型的基本思想: 模型认为视频图像序列中背景的各个像素点所对应的像素值会随着时间的推移而发生一些变化,这个变化与扰动仍然近似地满足高斯分布。当有运动目标出现的时候,像素点的像素值会发生很大的变化,并且这个变化不服从高斯分布。因此可以根据某时刻某个像素点的像素值是否满足高斯分布来判定该像素点是背景点还是前景点。

对于随机的变量x,由正态分布可以得出x概率密度函数,则高斯分布的表达式如下述公式所示。

将背景图像中的每一个像素点用单个高斯分布模型来表示,则表达式如下述公式所示。

 其中,\mu是变量X的期望,\sigma是变量X的标准差,X_{t}表示当前帧中t时刻像素点的像素值,

\mu_{t}为当前帧中t时刻像素点的均值,\sum _{t}为当前帧中t时刻像素协方差矩阵。

  • 初始背景模型的确定

传统的单高斯模型中,通常选取视频图像序列的第一帧来建立背景。首先对图像中的所有像素点的均值和方差进行初始化,进而为每个像素点建立一个背景高斯模型。\mu_{0}为每个像素点的均值,\sigma _{0}^{2}为每个像素点的方差,由均值\mu_{0}和方差\sigma _{0}^{2}组成的具有高斯分布的图像B_{0}则为单高斯模型的初始背景模型估计。

  • 运动目标检测

在背景模型确定之后,对后续的视频帧进行运动目标检测。将后续的图像帧中的各个像素点与所确定的背景模型进行匹配,从而确定该像素点是否符合已建立的背景模型。如果该像素点符合背景模型,则可判定该像素点是背景点,否则判定为前景点。判断表达式如下述公式所示。

其中,T_{p}为预先设定好的阈值,阈值T_{p} = D *\sigma _{t}D为固定值,\sigma _{t}为标准差。“0”代表背景像素点,“1”代表前景像素点,也就是运动目标。

  • 模型的更新

由于视频图像序列不是随着时间的推移而静止不变的,所以背景也会在一定的程度上发生变化。因此,引入背景学习率\alpha (0 < \alpha < 1)对所建立的背景模型进行更新,相应更新表达式如下所示。

其中,t表示当前帧,t -1表示的是前一帧。学习率\alpha (0 < \alpha < 1)是决定着背景更新速度的重要参数,它体现了单高斯模型对实际背景的变化的响应能力。模型学习率\alpha (0 < \alpha < 1)是在背景模型的初始化中设定的,\alpha越大,则表示更新的速度越快,反之,\alpha越小,则表示更新的速度越慢。若模型的学习率\alpha较大的话,就会很快适应背景所发生的变化。在背景模型的更新中,学习率\alpha通常取值为0.05。 

 单高斯模型的优点是运算量小,计算的复杂度较低,检测效果较完整、准确、理想。如果在背景模型初始化的时候,输入的图像是没有运动物体出现的纯背景图像,运动目标的检测结果是非常不错的。但是,如果输入的图像中存在运动目标、其他的干扰(树枝和树叶的摇动或者水的波纹)或者场景中光照突变的时候,运动目标的检测效果会大大地降低,甚至造成严重的误检。总而言之,单高斯背景模型只适用于呈单峰分布的背景图像,不适用于复杂场景和会发生较大变化的场景中。对于呈多峰分布的复杂的背景图像,可以选择用混合高斯模型来进行建模。

④ 混合高斯模型法

混合高斯模型(Gaussian Mixture Model)是法使用K(一般为3到5)个高斯模型来表征图像帧中每一个像素点的特征。在混合高斯模型中,对图像中每个像素点建立K个高斯模型,对于t时刻像素点X的概率密度函数如下所示。

式中,\eta表示单高斯概率密度函数,W_{n,t}表示t时刻第n个高斯模型的权值大小,其中
\sum_{n=1}^{k}W_{n,t}=10\leq W_{n,t}\leq 1\mu _{n,t}表示t时刻第n个高斯模型的均值向量。\sum _{n,t}表示t时刻第n个高斯模型的协方差向量,其中\sum _{n,t} = \sigma _{n,t}^{2}II为单位矩阵)。\sigma _{n,t}t时刻第n个高斯模型的标准差。K表示的是高斯分布的数量,一般在3到5之间取值,就可以满足需要。在背景建模的过程中,模型数量K的值越大,则模拟的背景的效果越好、更真实。混合高斯模型不但可以模拟更为复杂的背景,而且能更好的适应场景中发生的实时变化。但是,随着K值的增大计算量也有所会增加,进而会对硬件的要求有所提高。 

  • 模型的初始化

在混合高斯模型法中,可以以每个像素点在某时刻(如t =1时刻)的像素值作为第一个高斯分布的均值,并且给这个高斯分布设置一个较大的方差。与单高斯模型法有区别的是,混合高斯模型法要为高斯分布函数设定一个权值。权值越大的高斯分布更新速度反而越慢,反之,权值越小,则更新的速度却越快。在模型初始化的时候,给第一个高斯分布设置的的权值较小,而其他的几个高斯分布函数的均值、方差和权值都设置为零。

  • 背景的选取

首先,按W_{n,t}/\sigma _{n,t}的比值将每个像素点的K个高斯分布由大到小进行排序,然后从中选择出最能表征背景的高斯分布。W_{n,t}/\sigma _{n,t}的值越大,则表示像素值的波动越小,而权重则越大,这些正是背景像素值的特性。因此,描述背景可能性越大的分布越靠前,描述背景可能性越小的分布则越靠后。所以选择前B个分布作为最终表征背景的高斯分布,余下的高斯分布则认为是前景。公式如下所示。

其中,H是一个门限阈值,H一般在0.5至1之间取值,其决定了拟合背景所需要的高斯模型的个数。如果H的值偏小,就会导致混合高斯模型所模拟的背景相对简单化,但是好处是计算量会有所降低。反之,如果H的值过大,不但会使计算量有所增加,而且会在一定程度上导致前景目标的漏检。在上述公式中,H取最佳的经验阈值为0.75。

  • 参数的更新及前景目标的提取

对获取的当前帧的每一个像素点分别与已经存在的K个高斯分布进行匹配,如果满足如下公式,则该像素点与高斯分布匹配成功。如果不满足公式,则说明匹配不成功。

匹配成功,则对第一个相匹配的高斯分布的参数进行更新,如下述公式所示。

对于不匹配的K-1个高斯分布的权值进行衰减处理,如下述公式所示。

如果获取的当前帧的像素点与K个高斯分布都匹配不成功,则用一个新的高斯分布代替权值最小的那个高斯分布,新的高斯分布以当前像素点的像素值为均值,并且给新的高斯分布初始化一个较大的方差(例如30)和一个较低的权值(例如0.02)。 

当前帧的像素值与B个高斯分布模型都不匹配,则判定该像素点为前景点(运动目标),否则为背景点。

以上的公式中,\rho为权值更新率。\alpha为模型学习率,一般在0.001至0.01之间取值,是决定着背景更新速度的重要参数。如果\alpha的值越小,则更新的速度就会越慢,反之,如果\alpha的值越大,则更新的速度就会越快。如果模型学习率\alpha较大,混合高斯模型就会很快适应背景的变化和干扰,同时也有可能将缓慢运动的前景目标“学习”为背景,造成漏检。如果模型学习率\alpha较小,则在检测的前期阶段可能会存在检测效果上的不准确的问题,但是随着模型的不断更新,背景模型的准确性是最终会趋于稳定的。混合高斯模型的原理图如下图所示。

与单高斯模型相比,混合高斯模型检测的效果更好。混合高斯模型对存在小幅度运动变化的背景有较好的抗干扰能力,缺点是速度慢,计算量大。虽然混合高斯模型引入了多个高斯模型,但是仍然无法解决对背景中光照突变敏感的问题,从而容易造成误检,并且对阴影的抑制效果较差,从而影响运动目标检测的结果

⑤ 总结

光流法的优点在于能检测出独立的运动目标,而不需预知场景的任何信息,并且对变化的复杂背景情况有较好的适应能力。缺点也很明显,计算量特别大,所以除非有特殊的硬件支持,否则很难实现实时检测。

帧差法的优点在于对场景中的光线渐变不敏感,适于动态变化的环境,并且运算量相对较小。缺点是一般不能完整的提取出运动目标,并且在运动实体内易产生“空洞”现象,从而不利于下一步的分析和处理。

背景差分法的优点是能完整的提取出运动目标,缺点是对光照和外部条件造成的环境变化过于敏感,常会将运动目标的阴影错误的检测为其自身的一部分。同时由于时间流逝,实际场景的多种因素都会发生一定的变化,背景需要得到实时地更新,这是影响其检测效果的一个重要因素。

单高斯分布模型的优点是运算量小,复杂度较低。单高斯背景模型适用于呈单峰分布的图像,对于复杂的场景和变化较大的场景,单高斯模型则难以表达背景,从而检测结果不理想。

混合高斯模型对存在小幅度运动的背景有较好的抗干扰能力,缺点是速度慢,计算量大,对光照突变较敏感,从而很容易造成误检,并且对阴影的抑制效果较差,影响运动目标检测的结果。

相关文章:

运动目标检测方法的概述

目录 ① 光流法 ② 帧差法 ③ 背景差分法 ④ 混合高斯模型法 ⑤ 总结 运动目标检测技术的应用十分的广泛&#xff0c;尤其是在智能视频监控领域。运动目标检测为后续的图像处理等操作提供了基础&#xff0c;在某种程度上&#xff0c;决定了整个系统的性能。运动目标检测&a…...

【Qt-Edit】

Qt编程指南 ■ QTextEdit■ QLineEdit■ QLineEdit 设置正则表达式■ QPlainTextEdit■ QKeySequenceEdit■ QList<QLineEdit *> edits■■■ QTextEdit /* 实例和对象,设置位置和显示大小 */ textEdit = new QTextEdit(this)...

vue data变量不能以“_”开头,否则会产生很多怪异问题

1、 比如给子组件赋值&#xff0c;子组件无法得到这个值&#xff08;也不是一直无法得到&#xff0c;设置后this.$forceUpdate() 居然可以得到&#xff09;&#xff0c; 更无法watch到 <zizujian :config"_config1"> </zizujian>this._config1 { ...…...

解释RestFUL API,以及如何使用它构建web程序

RESTful API&#xff08;Representational State Transfer&#xff09;是一种基于网络的软件架构风格&#xff0c;用于构建分布式系统。它利用 HTTP 协议中的各种方法&#xff08;如 GET、POST、PUT、DELETE&#xff09;来对资源进行操作&#xff0c;使得不同应用程序能够相互通…...

文件下载输出zip文件

文件下载输出成zip文件&#xff1a; 1、前端整个按钮&#xff0c;调js方法&#xff1a;&#xff08;参数&#xff1a;param,需要下载的id&#xff0c;用逗号拼接&#xff09; var param "?dto.id";//需要自己拼接param window.location.href "<%basePat…...

构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

作者&#xff1a;柳下 概述 随着企业规模和数据量的增长&#xff0c;数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂&#xff0c;因此及时捕获和处理这些变化变得至关重要。为了满足这一需求&#xff0c;数据库 CDC&#xff08;Change Data Capture&#xff…...

鸿蒙开发(二)- 鸿蒙DevEco3.X开发环境搭建

上篇说到&#xff0c;鸿蒙开发目前势头旺盛&#xff0c;头部大厂正在如火如荼地进行着&#xff0c;华为也对外宣称已经跟多个厂商达成合作。目前看来&#xff0c;对于前端或客户端开发人员来说&#xff0c;掌握下鸿蒙开发还是有些必要性的。如果你之前是从事Android开发的&…...

Openslide安装

文章目录 安装open-slide python下载openslide二进制文件解压到Anaconda的library目录下配置环境变量在py文件中添加以下语句即可 官网链接 安装open-slide python 表面上这样就可以导入了但事实上会遇到 Couldn’t locate OpendSlide DLL的问题&#xff0c;openslide必须独立安…...

【ES】Elasticsearch常见问题与解决(持续更新)

目录 Elasticsearch常见问题 1. 集群健康问题 2. 性能问题 3. 映射问题 4. 分片问题 5. 内存问题 6. 硬件问题 7. 配置问题 8. 安全问题 9. 网络问题 10. 版本不兼容 Elasticsearch日常使用小结 【Q】离线告警&#xff0c;有IP已离线 【Q】统计某个应用的某个索引…...

2023.12.29 Python面向对象 封装_继承_多台

目录 1.封装-私有与公开权限 2.继承 2.1多继承 2.2继承多层传递 2.3重写父类方法 2.4继承链 2.5禁止私有继承 3.多态 4.总结 1.封装-私有与公开权限 公开属性、公开方法&#xff1a;随便调用 私有属性、私有方法&#xff1a; 只能在类定义的内部调用 以两个下划线开头__的…...

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…...

大创项目推荐 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…...

Python经典游戏 唤醒你童年记忆

这些游戏你玩过几个&#xff1f; 1.贪吃蛇2.吃豆人3.加农炮4.四子棋5. Fly Bird<font color #f3704ab>6.记忆&#xff1a;数字对拼图游戏&#xff08;欢迎挑战&#xff01;用时&#xff1a;2min&#xff09;7.乒乓球8.上课划水必备-井字游戏&#xff08;我敢说100%的人都…...

什么是骨传导耳机?骨传导能保护听力吗?

骨传导耳机是一种非常特殊的蓝牙耳机&#xff0c;它通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机&#xff0c;它不通过空气传送声音&#xff0c;而是通过头骨的振动来传送声音。 并且骨传导耳机能够在一定程度上起到保护听力的作用&#xff0c;主要是因为它们不…...

使用electron属性实现保存图片并获取图片的磁盘路径

在普通的网页开发中&#xff0c;JavaScript由于安全性的考虑&#xff0c;通常是无法直接获取到客户端的磁盘路径的。浏览器出于隐私和安全原因对此类信息进行了限制。 在浏览器环境下&#xff0c;JavaScript主要通过Web APIs来与浏览器进行交互&#xff0c;而这些API通常受到浏…...

进击的奶牛

题目 进击的奶牛 题意 通过二分查找算法找到一个最小间距x&#xff0c;使得在数组a中选出的k个数两两之间的间距都不小于x&#xff0c;并且x尽可能大。最后输出这个最大的x值。 思路 程序通过循环依次获取了n个整数&#xff0c;存储在数组a中。.然后&#xff0c;程序对数组a进…...

12月27日,每日信息差

以下是2023年12月27日的8条信息差 第一、小米公司&#xff1a;小米汽车正式加入小米“人车家全生态”&#xff0c;随着小米汽车的即将发布&#xff0c;小米“人车家全生态”也实现了真正闭环 第二、吉利将于2024年初发射11颗卫星&#xff0c;吉利银河E8率先搭载卫星通信技术。…...

【赠书第14期】AI短视频制作一本通:文本生成视频+图片生成视频+视频生成视频

文章目录 前言 1 前期准备 2 拍摄与录制 3 后期编辑 4 技巧与注意事项 5 推荐图书 6 粉丝福利 前言 随着智能技术的迅猛发展&#xff0c;AI 短视频制作成为了一种新兴而创新的表达方式&#xff0c;广泛应用于社交媒体、广告营销、教育培训等领域。本文将介绍 AI 短视频…...

简单工厂设计模式(计算器实例优化)

简单工厂设计模式&#xff08;计算器实例优化&#xff09; 介绍为什么采用面向对象编程而不是面向过程呢&#xff1f;实例讲解业务层划分出来逻辑层继承简单工厂&#xff1a;&#xff08;多态&#xff09;业务层&#xff1a;&#xff08;解耦合&#xff09;主控制台 总结 介绍 …...

iconify图标集离线使用方案简介

1.需求描述 前端项目&#xff0c;技术栈使用Vue3Element Plus&#xff0c;参考了ruoyi-vue-pro项目与vue-element-plus-admin项目&#xff0c;封装了一个Icon组件&#xff0c;图标使用的是iconify,项目部署在内网环境&#xff0c;不能连接互联网&#xff0c;需要部署一套iconi…...

java基础之理解多态

目录 简单理解 满足多态的三个条件 有类继承或者接口实现 子类要重写父类的方法 父类的引用指向子类的对象。 代码示例 动态多态 静态多态 个人观点 简单理解 简单理解就是&#xff0c;同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产生不同的执…...

第二证券:A股市场放量反弹 跨年行情或启动

沪指日线等级放量反弹&#xff0c;周四收中阳线成功站上20日均线&#xff0c;底部结构或可树立。创业板指大涨近4%&#xff0c;日线MACD出现底违反&#xff0c;多方动能较强&#xff0c;中等级反弹行情或在酝酿。月线来看&#xff0c;12月创业板指探底上升出现较长下影&#xf…...

web漏洞与修复

一、web漏洞 检测到目标X-Content-Type-Options响应头缺失 详细描述X-Content-Type-Options HTTP 消息头相当于一个提示标志&#xff0c;被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定&#xff0c;而不能对其进行修改。这就禁用了客户端的 MIM…...

基于Java+SpringBoot+vue实现图书借阅管理系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 &#x1f345; 作者主页 程序设计 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringBootvue实现图书借阅和销售商城一体化…...

xml文件学习(xml格式)可扩展标记语言(Extensible Markup Language)

XML 教程 文章目录 XML 文件学习1. XML 概述1.1 什么是 XML&#xff1f;1.2 XML 有什么作用&#xff1f; 2. XML 基本结构1. 声明2. 元素3. 属性4. 文本5. 注释 3. XML 高级知识3.1 XML 命名空间3.2 XML 架构3.3 XML 工具3.4 XML 技术 4. XML 应用实例 XML 文件学习 XML&#…...

nodejs+vue+ElementUi家政服务系统c90g5

项目中登录模块用到token家政服务平台有管理员&#xff0c;雇主&#xff0c;雇员三个角色。管理员功能有个人中心&#xff0c;雇主管理&#xff0c;雇员管理&#xff0c;资料认证管理&#xff0c;项目类型管理&#xff0c;服务项目管理&#xff0c;需求信息管理&#xff0c;服务…...

数据库(Database)基础知识

什么是数据库 数据库是按照数据结构来组织、存储和管理数据的仓库&#xff0c;用户可以通过数据库管理系统对存储的数据进行增删改查操作。 数据库实际上是一个文件集合&#xff0c;本质就是一个文件系统&#xff0c;以文件的方式&#xff0c;将数据保存在电脑上。 什么是数据…...

QT应用篇 二、QML用Image组件实现Progress Bar 的效果

QT应用篇 一、QT上位机串口编程 二、QML用Image组件实现Progress Bar 的效果 三、QML自定义显示SpinBox的加减按键图片及显示值效果 文章目录 QT应用篇前言一、qml需求二、使用组件1.Image组件2.Image中fillMode的使用例子 总结 前言 记录自己学习QML的一些小技巧方便日后查找…...

SElinux工作原理简介并演示chcon、semanage、restorecon的使用方法

目录 一.SElinux工作原理简介 1.system_u 2.object_r 3.httpd_sys_content_t 4.s0 二.SElinux策略的具体使用详情 1.restorecon 2.semanage 3.chcon 一.SElinux工作原理简介 通过mac方式管理进程&#xff0c;管理的目标是进程是否具有读取权限的文件&#xff08;文件…...

表情串转换

前言 NWAFU 2021阶段二 D 一、题目描述 题目描述 在一个字符串中&#xff0c;设置了由‘/’前导字符和某些特定字母构成的转义子字符串&#xff0c;如“/s”、“/f”、“/c”等用于表示特殊表情符号。现要求编写一个函数&#xff0c;将给定字符串中的转义字符串转换为表情字…...

wordpress 论坛app/杭州哪家seo公司好

很喜欢notepad&#xff0c; 简单而强大 今天想利用他来正则抽取所有sql语句中的表名&#xff0c;SQL语句如下&#xff0c;以供广大人民使用 getEntityData.sqlselect s.analysis_group_id,s.period_id,s.period_value_id,s.fiscal_year_nbr,s.period_start_dt,s.period_end_dt,…...

php网站做语言包/微信视频号小店

也许你可能并不知晓&#xff0c;但数据安全之战每天确实在我们周围发生着。例如美国和以色列通过Stuxnet&#xff08;蠕虫&#xff09;病毒黑进伊朗的核武器研究数据库&#xff0c;并对离心机的转速做了更改&#xff0c;直接导致伊朗核武器的研究滞后两年之久&#xff1b;还有L…...

b2b电子商务网站的主要类型有哪些/自助建站的优势

二分 比较好的二分题目&#xff0c;需要花点脑筋想到&#xff0c;另外写的细节也多 题意&#xff1a;比较好懂&#xff0c;a数组有n个元素&#xff0c;b数组有m个元素&#xff0c;a数组的元素分别和b数组的元素相乘得到新的元素&#xff0c;那么一共会得到n*m个元素&#xff0c…...

网站备案证件/外包网络推广营销

idea 打开 vue 项目爆红 有可能是项目中有这个文件 .eslintrc.js 有时间可以研究怎么写这个配置 我是直接注释掉了。。。...

男女在一起做恶心的事网站/seo标签怎么优化

2019独角兽企业重金招聘Python工程师标准>>> Google Chrome目前已经是性能最佳&#xff0c;对HTML5/CSS3等网页新技术支持最好的浏览器了&#xff0c;所以我浏览网站&#xff0c;习惯性地总是用Chrome。 最近一段时间&#xff0c;我经常用Chrome浏览国外教学视频网…...

ps如何做音乐网站/北京百度竞价

问题&#xff1a; 刚刚解决了前端访问的问题&#xff0c;前端是能调用了&#xff0c;但是我的swagger界面无法显示了。 原因&#xff1a; 由于配置了CORS&#xff0c;swagger的内置接口被拦截器拦下了。 解决方案&#xff1a; 在你的 CORS的配置文件 里&#xff0c;加上如下…...