常服的英文译语怎么说-法国小姐


2023年3月31日发(作者:国际音标发音表)

相关侯门一入深似海从此萧郎是路人全诗 --Python图像的⼏何变换(包括缩放平移旋转仿射变换透视变

化)

⽂章⽬录

1.实现

以下内容来⾃:

OpenCV-PythonTutorials>ImageProcessinginOpenCV>

OpenCV提供两种转换函数,fine和rspective,有了这两个函数,就可以进⾏所有类型的变换。fine使⽤2x3

的变换矩阵,rspective使⽤3x3的变换矩阵作为输⼊。

1.1Scaling(缩放)

Shrink&Zoom缩放

缩放就是对图像进⾏resize,opencv中使⽤()完成这个功能。

图像⼤⼩可以⼿动指定,也可以指明缩放因⼦

可以使⽤不同的插值⽅法,推荐的插值⽅法是_AREA(图像缩⼩时),_CUBIC(slow)和_LINEAR(图像变

⼤时)。默认的插值⽅法是_LINEAR⽤于进⾏resize.

可以使⽤以下⽅法对输⼊图像进⾏resize

#准备⼯作

importcv2

importnumpyasnp

asplt

%matplotlibinline

ms[\'-serif\']=[\'SimHei\']#⽤来正常显⽰中⽂标签

ms[\'e_minus\']=False#⽤来正常显⽰负号

img=(\"../../../img/\")

#使⽤缩放因⼦

res=(img,None,fx=0.5,fy=0.5,interpolation=_CUBIC)

#直接指定(width,height)

res2=(img,(400,250),interpolation=_CUBIC)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1.2Translation(平移)

平移就是指移动⼀个物体的位置,如果已知移动的⽅向(左移/右移,上移/下移)以及移动的距离(),那么就可以创建⼀个类似下

⾯的转移矩阵

可以使⽤numpyarray来元旦的古诗10首小学 定义这个转移矩阵,dtype类型为:32。然后将这个矩阵传递给

fine()函数。例如,转移的距离为(100,50)(X轴⽅向移动距离,Y轴⽅向移动距离描写冬天美景的古诗 ):

(x,y)t,tx

y

M

#准备⼯作

importcv2

importnumpyasnp

asplt

%matplotlibinline

ms[\'-serif\']=[\'SimHei\']#⽤来正常显⽰中⽂标签

ms[\'e_minus\']=False#⽤来正常显⽰负号

img=(\"../../../img/\")

row,col=[0],脸组词 [1]

M=32([[1,0,青山依旧在几度夕阳红的作者是明代的 100],[0,1,50]])

dst=fine(img,M,(col,row))

#注意,这⾥是(col,row),⽽不是(row,col)

d诗经男孩名字高端大气 st_reverse=fine(img,M,(row,col))

#如果是(row,col)就会变成下⾯中间的样⼦

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

注意

fine()函数的第三个参数指的是输出图像的⼤⼩,其格式应该为:宽,⾼,记清楚,宽=列数,⾼=⾏数

1.3Rotation(旋转)

将⼀个图像旋转度,是通过以下形式的转换矩阵实现的。(但是很明显,之前说fine()函数接受的转移矩阵必须是,所以下⾯

这个普通的矩阵肯定是不能直接使⽤的)

不过OpenCV提供了可以在任意旋转中⼼五经是哪五经 进⾏旋转的功能,这样就可以在任意唯⼀进⾏旋转,⽽不是像上⾯那样,只可以以图像中⼼为旋转

中⼼进⾏旋转。修改后的转移矩阵可以表⽰为:

其中,

为了获取这个转移矩阵,OpenCV提供了ationMatrix2D函数,该函数的函数原型为:getRotationMatrix2D(center,angle,scale)。

下⾯例⼦中,将图像旋转90度,没有对旋转中⼼进⾏改变,图像也不进⾏缩放。

23

M

#读取图像的代码在1.1和1.2部分有

M=ationMatrix2D(((col-1)/2.0,(row-1)/2.0),90,1)

dst=fine(img,M,(col,row))

1

2

3

这个其实在OCR做预处理的时候很常见真正30个有名的民间故事 ,参考:

1.4AffineTransformation(仿射变换)

在仿射变换中,原始图中平⾏的线,在结果图中也仍然保持平⾏。为了找出这个转移矩阵,需要找到输⼊图像中的三个点,以及这三个点在

输出图像中的位置。ineTransform会创建⼀个的矩阵,将这个矩阵传⼊fine中。23

#读取图像的代码在1.1和1.2部分有

pts1=32([[50,50],[200,50],[50,200]])

pts2=32([[10,100],[200,50],[100,250]])

M=ineTransform(pts1,pts2)

dst=fine(img,M,(col,row))

1

2

3

4

5

6

所以仿射变换,其实就相当于把矩形拉着四个⾓,变成⼀个平⾏四边形。

关于ineTransform创建的的矩阵,其实就是根据输⼊的三组顶点,和这三个点在输出图像中的三组位置,使⽤矩阵乘法,得到

这个转移矩阵M。公式解释来⾃:

23

pts1=32([[50,50],[200,50],[50,200]])#原图的三个点

pts2=32([[10,100],[200,50],[100,250]])#原图三个点变换后在输出图的位置(这个要⾃⼰蒙吧。。⽐较容易找的点其实就是四个⾓的位置)

M=ineTransform(pts1,pts2)

M

>(array([[1.26666667,0.6,-83.33333333],

[-0.33333333,1.,66.66666667]]),

1

2

3

4

5

6

简单来说,pts1就是dst(shape=(3,2)),pts2就是src(shape=(3,2)),所以矩阵乘法可以表⽰为:

所以就是已知源和⽬标,由三组点,确认中间的这个变换矩阵(就好像,要求y=ax+b,其实只需要知道两组(x,y)就可以找到和的映射关

系⼀样)

1.5PerspectiveTransformation(透视变换)

对于透视变换,需要的变换矩阵。和仿射变换不同的是(仿射变换保持平⾏),透视变换前后直线仍然是直的(斜线只要不转

弯,就仍然是直线。只是⽅向不是正东/西/南/北⽽已)

同样的,为了找到这个变换矩阵,这次需要输⼊输出图像中对应4个点。这四个点中,需要有三个点不共线(都是为了计算)。

然后可以使⽤spectiveTransform函数找到那个变换矩阵。然后再使⽤这个计算出的3times3$的变换矩阵作

为rspective的参数进⾏调⽤。

1.6总结

综上,可以知道,

缩放使⽤函数

平移、旋转以及仿射变换使⽤的都是函数,只是获取变换矩阵M的⽅式不同,所以可以认为前两者属于仿射变换

的特殊情况

透视变换使⽤的是函数

0.理论

从仿射变换中我举的例⼦中可以知道,这些变换其实就是对源矩阵做⼀个矩阵乘法。

xy

33

#读取图像的代码在1.1和1.2部分有

pts1=32([[56,65],[368,52],[28,387],[389,390]])

pts2=32([[0,0],[300,0],[0,300],[300,300]])

M=spectiveTransform(pts1,pts2)

#注意,这⾥的函数调⽤时getPerspectiveTransform,⽽不再是getAffineTransform

dst=rspective(img,M,(col,row))

1

2

3

4

5

6

7

resize()

fine()

rspective()

感谢和,提供了很好的图.

粘贴如下:

2.新发现

看到了国外⼀门课程,斯坦福EE368/CS232-DigitalImageProcessing,主页点击

另外还有中国⼤学mooc上数字图像处理的课程

3.疑惑

以前我只想实现⼀个简单的平移功能,所以我构建了⼀个和原图⼀样⼤的零矩阵,然后将的部分数值赋给,然后就出现了下⾯这种

情况。⾄今也没想明⽩为什么

XZXZ

Z=_like(X)#=(229,227,3)

print(,)

Z[:,:,40:]=X[:,:,:187]

(figsize=(5,10))

t(211)

(e(229,227,3))

t(212)

(e(229,227,3))

1

2

3

4

5

6

7

8

9

参考:

官⽅⽂档:

opencv官⽅⽂档:以及

opencv官⽅⽂档参考了:ComputerVision:AlgorithmsandApplications这本书,书的链接点击

matplotlib⽂档:

mat关于中国节日的古诗 plotlib⽂档:

另外,以前看的opencv-python的那个⽂档,⽬前已经失效了。但是在opencv的官⽅⽂档⾥,有opencv-python的内容,参考:

博客:

PPT:

更多推荐

affine是什么意思ine在线翻译读音例句