[自动驾驶算法][从0开始轨迹预测]:一、坐标和坐标系变换

既然要从0开始轨迹预测,那从哪开始写起呢?回想下自己的学习历程,真正有挑战性的不是模型结构,不是繁琐的训练和调参,而是数据的制作!!!

笔者自认为不是一个数学基础牢固的人,那么我们的轨迹预测之旅就从坐标转换开始吧~~~

由难至简,才能做到【删繁就简三秋树,领异标新二月花】,专注于轨迹预测的核心算法。


坐标和坐标系变换

    • 1. 坐标系:
    • 2. 坐标转换与坐标系转换
      • 2.1 2D坐标转换
        • 1. 平移(Translation)
        • 2. 缩放(Scaling)
        • 3. 旋转(Rotation)
      • 2.2 2D坐标系转换
        • 1. 坐标系平移
        • 2. 坐标系旋转
        • 3. 2D坐标系旋转平移总结
      • 2.3 3D坐标系转换
        • 1. 3D坐标系平移
        • 2. 3D坐标系旋转

1. 坐标系:

二维直角坐标系,笛卡尔坐标系(Cartesian coordinate system),由两条相互垂直、相交于原点的数线构成的。
在这里插入图片描述

直角坐标系也可以推广至三维空间与高维空间 (higher dimension)。在原本的二维直角坐标系,再添加一个垂直于x-轴,y-轴的坐标轴,称为z-轴,叫做三维直角坐标系。

那么三维直角坐标系的x,y,z-轴的指向,以及绕x,y,z-轴旋转的方向该如何确定呢??

三维直角坐标系分两种,左手坐标系和右手坐标系,那么为什么要用左手和右手来区分呢?这是因为当确定了x-轴,y-轴方向之后,z-轴的方向有两种可能,它可以通过左手或右手来确定。

下面就是这两个坐标系 x,y,z-轴指向 的规则示意图(图中固定了x轴的正方向向右,y轴的正方向向上),其中大拇指、食指、中指分别对应于x-轴、y-轴、z-轴:

对坐标系使用左手与右手的命名,有一个作用就是用来方便 判断旋转的正方向,这就是左手螺旋法则和右手螺旋法则。例如对左手坐标系,确定一个旋转轴后,左手握住拳头,拇指指向旋转轴的正方向,四指弯曲的方向为旋转的正方向。相应地,右手坐标系就用右手来判定。确定了旋转的正方向后,在公式计算中就很容易知道是该使用正角度还是负角度了。下图就是右手的例子:
在这里插入图片描述

给定任意一个旋转角度的三维坐标系,如果按上面的方法判断旋转正方向,首先,你得确定这个坐标系是左手坐标系还是右手坐标系,这时你会先拿出一只手来,像上图一样摆好三根手指的姿势来比对给定坐标系的x、y、z轴正方向看是否一致。然后根据旋转轴的正方向,用相应的手来判断旋转正方向。

那么有什么快速判断的方法吗?
在这里插入图片描述

上图给出左右手坐标系绕z轴的旋转方向,从我们眼睛看屏幕的角度来看,它们绕z轴旋转的正方向都是逆时针。同理,绕y-轴和x-轴也可以获得相同的结论。则:对于任意旋转角度的三维坐标系(无需区分左右手),绕某一坐标轴旋转的正方向,与另外两个坐标轴的正方向顶端按X—>Y—>Z—>X的顺序进行指向的方向一致。


2. 坐标转换与坐标系转换

自由度的定义:自由度(Degree of Freedom,简称DOF)是指系统中可以自由变化的独立参数的数量,也就是系统的状态空间维度(有几个量可以调节)。

公式预警!!! 都是超级简单的向量的相加,相信我读完你会有收获哒!!!

2.1 2D坐标转换

1. 平移(Translation)

在2D空间中,我们经常需要将一个点平移到另一个位置(如下图所示)。假设空间中的一点P,其用坐标表示为(x,y);将其向 x方向平移 tx,向y方向平移ty, 假设平移后点的坐标为(x’,y’),则上述点的平移操作可以归纳为:
x ′ = x + t x y ’ = y + t y O P ′ → = O P → + P P ′ → x' = x+t_x \\y’ = y+t_y \\ \overrightarrow{OP'} = \overrightarrow{OP} + \overrightarrow{PP'} x=x+txy=y+tyOP =OP +PP
在这里插入图片描述

公式(1)又可以采用矩阵表述如下:

[ x ′ y ′ ] = [ 1 0 t x 0 1 t y ] [ x y ] \left[ \begin{array}{cc} x' \\ y'\end{array} \right] = \left[ \begin{array}{cc} 1 & 0&t_x\\ 0&1&t_y\end{array} \right]\left[ \begin{array}{cc} x \\ y\end{array} \right] [xy]=[1001txty][xy]

2. 缩放(Scaling)

​ 其中,s_x和s_y分别是沿x和y轴的缩放因子。
x ′ = s x x y ’ = s y s O P ′ → = s O P → x' = s_xx \\y’ = s_ys \\ \overrightarrow{OP'} = s\overrightarrow{OP} x=sxxy=sysOP =sOP

在这里插入图片描述

​ 齐次坐标的形式:
[ x ′ y ′ 1 ] = [ s x 0 1 0 s y 1 0 0 1 ] [ x y 1 ] \left[ \begin{array}{cc} x' \\ y'\\ 1\end{array} \right] = \left[ \begin{array}{cc} s_x & 0&1\\ 0&s_y&1 \\ 0&0&1\end{array} \right]\left[ \begin{array}{cc} x \\ y \\1\end{array} \right] xy1 = sx000sy0111 xy1

3. 旋转(Rotation)

点P(x,y)绕坐标系原点旋转 θ \theta θ角得到点P’(x‘,y’)有:

在这里插入图片描述

将OP与x-轴正方向的夹角记做 β \beta β,OP的长度为r,且 r c o s β = x rcos\beta = x rcosβ=x, r s i n β = y rsin\beta=y rsinβ=y,则P‘的坐标可推导为:
x ′ = r c o s ( θ + β ) = r ( c o s θ c o s β − s i n θ s i n β ) = r c o s β c o s θ − r s i n β s i n θ y ′ = r s i n ( θ + β ) = r ( s i n θ c o s β + c o s θ s i n β ) = r c o s β s i n θ + r s i n β c o s θ x' = rcos(\theta + \beta) = r(cos\theta cos\beta - sin\theta sin\beta) = rcos\beta cos\theta -rsin\beta sin\theta \\ y' = rsin(\theta + \beta) = r(sin\theta cos\beta + cos\theta sin\beta) = rcos\beta sin\theta +rsin\beta cos\theta \\ x=rcos(θ+β)=r(cosθcosβsinθsinβ)=rcosβcosθrsinβsinθy=rsin(θ+β)=r(sinθcosβ+cosθsinβ)=rcosβsinθ+rsinβcosθ

x ′ = x c o s θ − y s i n θ y ′ = x s i n θ + y c o s θ x' = xcos\theta - ysin\theta \\ y'=xsin\theta+ycos\theta x=xcosθysinθy=xsinθ+ycosθ

同理写成齐次坐标的形式:
[ x ′ y ′ 1 ] = [ c o s θ − s i n θ 1 s i n θ c o s θ 1 0 0 1 ] [ x y 1 ] \left[ \begin{array}{cc} x' \\ y'\\ 1\end{array} \right] = \left[ \begin{array}{cc} cos\theta & -sin\theta&1\\ sin\theta&cos\theta&1 \\ 0&0&1\end{array} \right]\left[ \begin{array}{cc} x \\ y \\1\end{array} \right] xy1 = cosθsinθ0sinθcosθ0111 xy1

2.2 2D坐标系转换

理解了2D坐标转换,2D坐标系的转换(坐标点不动,坐标系动-横看成岭侧成峰)可以看成2D坐标转换的逆转换:

​ 坐标系向左平移 = 坐标点在原坐标系基础上向右平移;

​ 坐标系绕轴顺时针旋转 = 坐标点在原坐标系的基础上绕轴逆时针旋转;

1. 坐标系平移

红色坐标系相对于黑色坐标系中平移的距离为(i, j)

红色点在红色坐标系的位置为(x, y),则红色点在黑色坐标系的表示如下图所示:

图中示例,坐标系向左向下平移,相当于P点像右像上平移。

在这里插入图片描述

x ′ = i + x y ′ = j + y O P ′ → = O O ′ → + O ′ P → = ( i , j ) + ( x , y ) = ( i + x , j + y ) x'=i+x \\ y'=j+y \\ \overrightarrow{OP'} = \overrightarrow{OO'}+\overrightarrow{O'P} = (i, j) + (x, y) = (i+x,j+y) x=i+xy=j+yOP =OO +OP =(i,j)+(x,y)=(i+x,j+y)
​ 将坐标系的平移写成齐次坐标的形式:
[ x ′ y ′ 1 ] = [ 1 0 i 0 1 j 0 0 1 ] [ x y 1 ] \left[ \begin{array}{cc} x' \\ y'\\ 1\end{array} \right] = \left[ \begin{array}{cc} 1 & 0&i\\ 0&1&j \\ 0&0&1\end{array} \right]\left[ \begin{array}{cc} x \\ y \\1\end{array} \right] xy1 = 100010ij1 xy1

2. 坐标系旋转

在这里插入图片描述

已知 红点P在蓝色坐标系的位置(x, y),也知道蓝色坐标系相较于黑色坐标系顺时针旋转的角度θ

求解: 红点在黑色坐标系同的位置(X‘, Y’)?

蓝色坐标系相较于黑色坐标系顺时针旋转的角度θ,相当于计算P点在蓝色系内绕远点逆时针旋转θ

向量分解的方法推导:

将P点的坐标,沿黑色坐标系分解:

在这里插入图片描述

x ′ = x c o s θ − y s i n θ y ′ = x s i n θ + y c o s θ x'=xcos\theta-ysin\theta \\ y'=xsin\theta+ycos\theta x=xcosθysinθy=xsinθ+ycosθ
写成齐次坐标的形式:
[ x ′ y ′ 1 ] = [ c o s θ − s i n θ 1 s i n θ c o s θ 1 0 0 1 ] [ x y 1 ] \left[ \begin{array}{cc} x' \\ y'\\ 1\end{array} \right] = \left[ \begin{array}{cc} cos\theta & -sin\theta&1\\ sin\theta&cos\theta&1 \\ 0&0&1\end{array} \right]\left[ \begin{array}{cc} x \\ y \\1\end{array} \right] xy1 = cosθsinθ0sinθcosθ0111 xy1

3. 2D坐标系旋转平移总结

已知 红点在蓝色坐标系的位置P(xb, yb),也知道蓝色坐标系相较于黑色坐标系 旋转的角度θ, 其中 蓝色坐标系的原点在黑色坐标系中的位置为(δx, δy).

求解: 红点在黑色坐标系同的位置(xa, ya)?

在这里插入图片描述

以向量的方式推导:

​ P点在A系下的坐标可以用向量 O a P → \overrightarrow{O_aP} OaP 表示:
O a P → = O a O b → + O b P → \overrightarrow{O_aP} = \overrightarrow{O_aO_b}+\overrightarrow{O_bP} OaP =OaOb +ObP
​ 其中 O a O b → = ( δ x , δ y ) \overrightarrow{O_aO_b}=(\delta_x,\delta_y) OaOb =(δx,δy),那么我们该如何表示向量 O b P → \overrightarrow{O_bP} ObP 的坐标值呢?

​ 在此处有个误区,大家可能会觉得 O b P → = ( x b , y b ) \overrightarrow{O_bP}=(x_b,y_b) ObP =(xb,yb)。其实不是这样的,(xb,yb)坐标表示的是点P在B坐标系中的位置,视角是站在B坐标系上的,此时我们的视角应该是在A坐标系,或者是和A坐标系平行的。

所以,我们应该将B坐标系进行旋转,保证和A坐标系平行的,如下图所示。

在这里插入图片描述

根据前面旋转部分的推导,我们可以得到:
O b P → = [ c o s θ − s i n θ s i n θ c o s θ ] [ x b y b ] \overrightarrow{O_bP}=\left[ \begin{array}{cc} cos\theta & -sin\theta\\ sin\theta&cos\theta \end{array} \right]\left[ \begin{array}{cc} x_b \\ y_b \end{array} \right] ObP =[cosθsinθsinθcosθ][xbyb]
则根据公式(14),
O a P → = [ x a y a ] = [ δ x δ y ] + [ c o s θ − s i n θ s i n θ c o s θ ] [ x b y b ] = [ c o s θ ∗ x b + δ x − s i n θ ∗ y b s i n θ ∗ x b + δ y + c o s θ ∗ y b ] \overrightarrow{O_aP} = \left[\begin{array}{} x_a \\ y_a \end{array}\right] =\left[\begin{array}{} \delta_x \\ \delta_y \end{array}\right] + \left[\begin{array}{} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{array}\right]\left[\begin{array}{} x_b \\ y_b \end{array}\right] = \left[\begin{array}{} cos\theta*x_b+\delta_x -sin\theta*y_b \\ sin\theta*x_b+\delta_y + cos\theta*y_b \end{array}\right] OaP =[xaya]=[δxδy]+[cosθsinθsinθcosθ][xbyb]=[cosθxb+δxsinθybsinθxb+δy+cosθyb]
写成齐次坐标的形式:
[ x a y a 1 ] = [ c o s θ − s i n θ δ x s i n θ c o s θ δ y 0 0 1 ] [ x b y b 1 ] \left[ \begin{array}{cc} x_a \\ y_a\\ 1\end{array} \right] = \left[ \begin{array}{cc} cos\theta & -sin\theta&\delta_x\\ sin\theta&cos\theta&\delta_y \\ 0&0&1\end{array} \right]\left[ \begin{array}{cc} x_b \\ y_b \\1\end{array} \right] xaya1 = cosθsinθ0sinθcosθ0δxδy1 xbyb1

T T T表示transform,变换的意思。

B A T ^A_BT BAT表示的是 由B坐标系变换为A坐标系的意思。

对于2D坐标系的旋转和平移大致上我们可以得到以下:
P a = B A T ⋅ P b P b = B A T − 1 ⋅ P a P_a =_B^AT ·P_b \\ P_b =_B^AT^{-1} ·P_a Pa=BATPbPb=BAT1Pa

2.3 3D坐标系转换

3D坐标系转换,仅仅是添加了一维z-轴,所使用的基础公式和2D并无差异。

1. 3D坐标系平移

同样已知 红色点在蓝色坐标系的位置为(x1,y1,z1)

蓝色坐标系的原点在黑色坐标系中的位置为(δx,δy,δz)

求解: 红色点在黑色坐标系中的位置点(x2,y2,z2)?

在这里插入图片描述

根据向量的加法有:
O 2 P → = O 2 O 1 → + O 1 P → = ( δ x , δ y , δ z ) + ( x 1 , y 1 , z 1 ) \overrightarrow{O_2P} = \overrightarrow{O_2O_1} + \overrightarrow{O_1P} = (\delta_x,\delta_y,\delta_z)+(x_1,y_1,z_1) O2P =O2O1 +O1P =(δx,δy,δz)+(x1,y1,z1)
同样,用齐次坐标表示:
[ x 2 y 2 z 2 ] = [ 1 0 0 δ x 0 1 0 δ y 0 0 1 δ z ] [ x 1 y 1 z 1 ] \left[\begin{array}{cc} x_2 \\ y_2 \\z_2 \end{array} \right] = \left[ \begin{array}{cc} 1 & 0&0&\delta_x\\ 0&1&0&\delta_y \\0&0&1&\delta_z\end{array} \right]\left[ \begin{array}{cc} x_1 \\ y_1 \\z_1\end{array} \right] x2y2z2 = 100010001δxδyδz x1y1z1

2. 3D坐标系旋转
  1. 绕z轴旋转(同2D旋转):

    绕z-轴旋转,z坐标保持不变
    [ x 2 y 2 z 2 ] = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] [ x 1 y 1 z 1 ] \left[ \begin{array}{cc} x_2 \\ y_2\\ z_2\end{array} \right] = \left[ \begin{array}{cc} cos\theta & -sin\theta&0\\ sin\theta&cos\theta&0 \\ 0&0&1\end{array} \right]\left[ \begin{array}{cc} x_1 \\ y_1 \\z_1\end{array} \right] x2y2z2 = cosθsinθ0sinθcosθ0001 x1y1z1

  2. 绕y轴旋转:

    绕y-轴旋转,z坐标保持不变

[ x 2 y 2 z 2 ] = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] [ x 1 y 1 z 1 ] \left[ \begin{array}{cc} x_2 \\ y_2\\ z_2\end{array} \right] = \left[ \begin{array}{cc} cos\theta &0& sin\theta\\0&1&0\\ -sin\theta&0&cos\theta \\ \end{array} \right]\left[ \begin{array}{cc} x_1 \\ y_1 \\z_1\end{array} \right] x2y2z2 = cosθ0sinθ010sinθ0cosθ x1y1z1

你是不是也发现了,这个公式好像和2D旋转的不大一样?别急,手动画一下旋转图像你就会明白的

在这里插入图片描述

还记得前面介绍,旋转角的正负吗?忘记的同学可以看一下本篇文章的第一部分坐标系, 旋转的正方向为X->Y->Z->X,而此时绕y轴旋转的角度theta,为旋转的负方向,所以此时应在原旋转矩阵的基础上取逆矩阵即可~,这也是为什么绕Y轴旋转的公式不一样的原因!!!

  1. 绕X轴旋转:

    x坐标保持不变
    [ x 2 y 2 z 2 ] = [ 1 0 0 0 c o s θ s i n θ 0 − s i n θ c o s θ ] [ x 1 y 1 z 1 ] \left[ \begin{array}{cc} x_2 \\ y_2\\ z_2\end{array} \right] = \left[ \begin{array}{cc} 1&0&0\\0&cos\theta & sin\theta\\ 0&-sin\theta&cos\theta \\ \end{array} \right]\left[ \begin{array}{cc} x_1 \\ y_1 \\z_1\end{array} \right] x2y2z2 = 1000cosθsinθ0sinθcosθ x1y1z1

  2. 3D坐标系的旋转:
    R z y x = R x ( α ) R y ( β ) R z ( γ ) R_{zyx}=R_x(\alpha)R_y(\beta)R_z(\gamma) Rzyx=Rx(α)Ry(β)Rz(γ)
    将上述三个矩阵依次相乘:
    在这里插入图片描述

​ 上述矩阵看成:
[ R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33 ] \left[ \begin{array}{cc} R_{11}&R_{12}&R_{13} \\ R_{21}&R_{22}&R_{23}\\ R_{31}&R_{32}&R_{33}\end{array} \right] R11R21R31R12R22R32R13R23R33

如果我想通过旋转矩阵反求旋转角度,该如何做呢?观察旋转矩阵各个项之间的关系。

三角函数中,如果要求解一个角度值,可以通过:
θ = a r c t a n ( s i n θ , c o s θ ) \theta=arctan(sin\theta,cos\theta) θ=arctan(sinθ,cosθ)

求绕x-轴旋转的角度
α = a r c t a n ( R 21 , R 11 ) \alpha=arctan(R_{21},R_{11}) α=arctan(R21,R11)
求绕y-轴旋转的角度:

​ 求解绕y轴旋转有点麻烦,已知公式(24),则:
β = a r c t a n ( − R 31 , c o s β ) \beta=arctan(-R_{31},cos\beta) β=arctan(R31,cosβ)
​ 那么 c o s β cos\beta cosβ怎么求呢?我们继续观察 R 11 R_{11} R11 R 21 R_{21} R21, 他们分别是 c o s ( α ) ⋅ c o s ( β ) cos(α)⋅cos(β) cos(α)cos(β) s i n ( α ) ⋅ c o s ( β ) sin(α)⋅cos(β) sin(α)cos(β)

​ 尝试使用 R 11 2 + R 21 2 \sqrt{R_{11}^2+R_{21}^2} R112+R212 ,化简后得到:
c o s β = R 11 2 + R 21 2 cos\beta =\sqrt{R_{11}^2+R_{21}^2} cosβ=R112+R212
​ 则:
β = a r c t a n ( − R 31 , R 11 2 + R 21 2 ) \beta=arctan(-R_{31},\sqrt{R_{11}^2+R_{21}^2}) β=arctan(R31,R112+R212 )
求绕z-轴的旋转角度:
γ = a r c t a n ( R 32 , R 33 ) \gamma=arctan(R_{32},R_{33}) γ=arctan(R32,R33)

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

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

相关文章

Photoshop 2024 (PS2024) v25 直装版 支持win/mac版

Photoshop 2024 提供了多种创意工具,如画笔、铅笔、涂鸦和渐变等,用户可以通过这些工具来创建独特和令人印象深刻的设计效果。增强的云同步:通过 Adobe Creative Cloud,用户可以方便地将他们的工作从一个设备无缝同步到另一个设备…

Docker之数据卷的使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Docker之数据卷的使用》。🎯&#x…

《GreenPlum系列》GreenPlum初级教程-03GreenPlum系统管理

文章目录 第三章 GreenPlum系统管理1.关于GreenPlum数据库发布版本号2.启动和停止GreenPlum数据库2.1 启动数据库2.2 重启数据库2.3 仅重新载入配置文件更改2.4 停止GreenPlum数据库2.5 停止客户端进程 3.GreenPlum数据库状态查询4.访问GreenPlum数据库4.1 数据库会话参数4.2 支…

基于STM32和ESP8266的物联网应用开发与实现

基于STM32和ESP8266的物联网应用开发与实现可以实现智能家居、智能工业、环境监测等多种应用,它将结合STM32微控制器的实时控制能力和ESP8266无线通信模块的WiFi连接能力。在本文中,我们将介绍如何设计和实现这样的物联网应用,并提供相关的代…

使用 Github、Hugo 搭建个人博客

Hugo 静态网站构建手册:https://jimmysong.io/hugo-handbook/ 关键字:开源 博客 框架 1、GitHub Pages 官网:https://pages.github.com/ 文档:https://docs.github.com/zh Github Pages 简介 Websites for you and your project…

java多线程(并发)夯实之路-线程池深入浅出

线程池 Thread Pool:线程池,存放可以重复使用的线程(消费者) Blocking Queue:阻塞队列,存放等待执行的任务(生产者) poll方法(有时限地获取任务)相对take注…

【iOS】数据存储方式总结(持久化)

在iOS开发中,我们经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等,本篇文章将介绍六个主要的数据存储方式 iOS中数据存储方式(数据持久化) 根据要存储的数据大小、存储数据以及…

mac 使用brew卸载node

1.查看当前的node版本 node -v 2.查看使用brew 安装的版本,可以看到本机装了14、16、18版本的node brew search node 3.卸载node brew uninstall node版本号 --force 如分别删除14、16、18版本的node命令如下 brew uninstall node14 --force brew uninstall no…

漏洞分析|Cacti命令执行漏洞 (CVE-2022-46169)

1.漏洞描述 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具,可为用户提供强大且可扩展的操作监控和故障管理框架。 该漏洞存在于remote_agent.php文件中,未经身份验证的恶意攻击者可以通过设置HTTP_变量…

UE4工程升级UE5教程及注意事项

原文链接:https://mp.weixin.qq.com/s/vSVu0VsNub0J62Nz7vM6cA虚幻引擎5迁移指南 | 虚幻引擎5.3文档 (unrealengine.com) 官方教程应该是从英文直接翻译过来的,过多词汇没修改,本篇重新整理修改一下,供各位参考。 本教程介绍&…

Java8常用新特性

目录 简介 1.默认方法 2..Lambda表达式 3.Stream API 4.方法引用 5.Optional类 简介 Java 8是Java编程语言的一个重要版本,引入了许多令人兴奋和强大的新特性。这些特性使得Java程序更加现代化、灵活和高效。让我们一起来探索一些Java 8的常用新特性吧&#…

达摩研究院Paraformer语音识别-中文-通用-16k

原文:https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/readme_cn.md FunASR软件包路线图 English Version(docs) FunASR是由阿里巴巴通义实验室语音团队开源的一款语音识别基础框架,集成了语音端点检测、语…

FlinkCDC的分析和应用代码

前言:原本想讲如何基于Flink实现定制化计算引擎的开发,并以FlinkCDC为例介绍;发现这两个在表达上不知以谁为主,所以先分析FlinkCDC的应用场景和技术实现原理,下一篇再去分析Flink能在哪些方面,做定制化计算…

【动态规划】LeetCode-42. 接雨水

42. 接雨水。 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1…

OpenCV-22高斯滤波

一、高斯函数的基础 要理解高斯滤波首先要直到什么是高斯函数,高斯函数是符合高斯分布的(也叫正态分布)的数据的概率密度函数。 高斯函数的特点是以x轴某一点(这一点称为均值)为对称轴,越靠近中心数据发生…

css——文字实现渐变色的两种方案

&#xff08;一&#xff09;通过设置color、background-image及background-clip实现文字颜色渐变 <template><span class"title">文字实现渐变色的两种方案</span> </template><style> .title {color: transparent;background-image:…

Windows 项目从0到1的部署

目录 一. 安装jdk 1.1 安装jdk 1.2 配置jdk的环境配置jdk 1.3 配置成功 二. 配置tomcat 2.1 启动tomcat 2.2 防火墙设置 三. 安装MySQL 3.1 安装步骤 3.2 内部连接 3.3 外部连接 四. 部署项目 4.1 项目部署 4.2 修改mysql的用户密码 一. 安装jdk 这里给大家准备好了jdk和…

【Python】使用Opencv裁剪指定区域,再重构大小和保存示例

在Python中&#xff0c;使用OpenCV库可以很方便地截取图像的某一区域&#xff0c;然后尺寸重构&#xff0c;最后保存为新的图像文件。以下是一个示例代码&#xff0c;演示如何实现这一操作&#xff1a; import cv2# 读取图像 img cv2.imread(img.jpg)# 定义截取的区域&#x…

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写&#xff0c;提高汉字书写水平&#xff0c;在线小学生练字神器&#xff01;它不仅功能强大&#xff0c;而且完全免费&#xff0c;是每个小学生必备的练字工具。 海量字库&#xff1a;收录9574个常用汉字&#xff0c;满足小学生的学习需求。多…

Java面试之虚拟机

1、前言 本篇的面试题基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、什么是虚拟机&#xff1f; Java 虚拟机&#xff0c;是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件( .class )。 Java 被设计成允许应用程…