Fu Xianjun. All Rights Reserved
什么几何变换
几何变换是指将一幅图像映射到另一幅图像内操作的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能提高高效地完成图像的映射。
缩放
在OpenCV中,使用函数c2.resize0实现对图像的缩放,该函数的具体形式为:
dst = cv2.resize( sre, dsize[, fx[, fy[, interpolation]]])
式中:
dst代表输出的目标图像,该图像的类型与srC 相同,其大小为dsize (当该值非零时),或者可以通过src.sizeO、fx、 fy 计算得到。
src代表需要缩放的原始图像。
dsize 代表输出图像大小。
fx代表水平方向的缩放比例。
fy 代表垂直方向的缩放比例。
示例
翻转
在OpeanCv中,图像的翻转采用函数cv.ipo实现,该函数能够实现图像在水平方向翻转、垂直方向翻转、两个方向同时翻转,其语法结构为:
dst = cv2.flip( src, flipCode )
式中:
dst代表和原始图像具有同样大小、类型的目标图像。
src 代表要处理的原始图像。
flipCode 代表旋转类型。该参数的意义如下图所示。
示例
平移
图像平移是将图像的所有像素坐标进行水平或垂直方向移动,也就是所有像素按照给定的偏移量在水平方向上沿x轴、垂直方向上沿y轴移动。这种操作分为两种,一种是图像大小不改变,这样最后原图像中会有一部分不在图像中。还有一种就是图像大小改变。这样可以保全原图像的内容。
旋转
在使用函数cv2.warpAffine0对图像进行旋转时,可以通过函数cv2.getRotationMatrix2D0获取转换矩阵。该函数的语法格式为:
retval=cv2.getRotationMatrix2D(center, angle, scale)
式中:
center为旋转的中心点。
angle 为旋转角度,正数表示逆时针旋转,负数表示顺时针旋转。
scale 为变换尺度(缩放大小)。
利用函数cv2.getRotationMatrix2D0可以 直接生成要使用的转换矩阵M。例如,想要以图像中心为圆点,逆时针旋转45°, 并将目标图像缩小为原始图像的0.6倍,则在调用函数cv2.getRotationMatrix2D0生成转换矩阵M时所使用的语句为:
M=cv2. getRotationMatrix2D( (height/2, width/2),45,0.6)
示例
透视
透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Projection Mapping)。