代码:
cv2.resize(src,dsize,dst,fx,fy,interpolation)
参数:
src:图像
dsize:绝对尺寸,直接设定调整后的图像大小
dst:输出图像
fx,fy:比例因子,把dsize设为None
Interpolation:(插值方法)
interpolation=cv2.INTER_LINEAR# 双线性插值法
interpolation=cv2.INTER_NEAREST# 最近邻插值法
interpolation=cv2.INTER_AREA # 像素区域重采样(默认)
interpolation=cv2.INTER_CUBIC# 双三次插值
(注:缩小图像,用CV_INTER_AREA来插值;放大图像,用CCV_INTER_LINEAR)
代码:
cv2.warpAfffine(src,M,dsize,dst,flags,borderMode,borderValue)
参数:
src:图像
M: 变换矩阵。为2*3矩阵
对于(x,y)处的像素点,要把他移动到(x+tx,y+ty)的位置,
M=[ 1 0 tx
0 1 ty]
将M设为np.float32的类型
dsize :输出图像的大小。
flags :插值方法的组合(int 类型!)
borderMode:边界像素模式(int 类型!)
borderValue :(重点!)边界填充值; 默认情况下,它为0。
(图像旋转是指图像按照某个位置转动一定角度的操作,旋转后图像尺寸不变,但坐标轴发生变换)
代码:
cv2.getRotationMatrix2D(center,angle,scale)
参数:
center:中心点
angle:旋转角度
scale:缩放比例
返回值:
旋转矩阵M(调用cv2.warpAffine()进行旋转)
概念:
仿射变换就是图像的线性变换加上平移,即对图像的缩放,旋转,翻转和平移等操作。
如下图所示,左图的1,2,3点与右图一一对应,仍然形成三角形,即对应情况不发生变化,但形状已经发生变换。
由 image1 到 image2 的转换经过了三个操作:
1、旋转 (线性变换)
2、缩放操作(线性变换)
3、平移 (向量加)
(注:对于图像而言,宽度方向是X,高度方向是Y,坐标的顺序和图像像素对应下标一致所以原点在右上角,y的方向是向下。)
代码:
cv2.getAffineTransform(src,dst)
参数:
src:三个点在旧图位置矩阵
Dst:三个点在新图的位置矩阵
返回值:
旋转矩阵M(调用cv2.warpAffine()进行旋转)
概念:对于投射变换,我们需要一个 3x3 变换矩阵。在变换前后直线还是直线。要构建这个变换矩阵,你需要在输入图像上找 4 个点,以及他们在输出图像上对应的位置。这四个点中的任意三个都不能共线。这个变换矩阵可以由cv2.getPerspectiveTransform( ) 函数构建。然后把这个矩阵传给函数cv2.warpPerspective()。
代码:
cv2.getPerspectiveTransform(src,dst,solveMethod)
参数
:src:原图四个点的位置矩阵
dst:新图四个点的位置矩阵
返回值:
M
代码:
cv2.warpPerspective(src,M,dsize,dst,flags,borderMode,borderValue)
参数:
src:图像
M: 变换矩阵(将M设为np.float32的类型)
dsize :输出图像的大小
flags :插值方法的组合(int 类型!)
borderMode:边界像素模式(int 类型!)
borderValue :(重点!)边界填充值; 默认情况下,它为0
简介:图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔就是用来进行图像缩放的。
代码:
cv2.pyrUp(src,dst,dstsize,borderType) # 图像向上构建一个金字塔(尺寸变小,分辨率降低)
cv2.pyrDown(src,dst,dstsize,borderType) #图像向下构建一个金子塔(尺寸变大,但分辨率不会)
参数:
src:表示输入图像
dst:表示输出图像
dstsize:表示输出图像的大小
borderType:表示图像边界的处理方式