基于Python的opencv学习练习(六)几何变换[warpAffine()使用]

使用opencv进行几何变换warpAffine()

import cv2
import numpy as np
import matplotlib.pyplot as plt
#加载图像
img1=cv2.imread('2.jpg',0)
res=cv2.resize(img1,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
print(res.shape)
height,width=img1.shape[:2]
res=cv2.resize(img1,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
cv2.imshow('EXpend',res)
cv2.imshow('Origin',img1)
cv2.waitKey(0)

对图像进行放缩只需要使用resize()函数。
上述程序显示两种方法
第一种指定x,y方向的缩放系数。
第二种设置缩放后的图像大小。
第三个参数表示插值方法
默认为 flags=cv2.INTER_LINEAR,表示线性插值,此外还有:cv2.INTER_NEAREST(最近邻插值) cv2.INTER_AREA (区域插值) cv2.INTER_CUBIC(三次样条插值) cv2.INTER_LANCZOS4(Lanczos插值)。
在缩放时我们推荐使用 cv2.INTER_AREA,
在扩展时我们推荐使用 v2.INTER_CUBIC(慢) 和 v2.INTER_LINEAR。
旋转变换

import cv2
import numpy as np
# 加载图像
img1=cv2.imread('2.jpg',0)
print(img1.shape)
rows, cols = img1.shape[0:2]
Rotate = cv2.getRotationMatrix2D((cols/2,rows/2),45,0.8)
#第一个参数为旋转的中心坐标,第二个为旋转方向,第三个为缩放比例、
dst = cv2.warpAffine(img1, Rotate, (int(2*cols),int(2*rows)), borderMode=1,borderValue=[255,255,255])
cv2.imshow('Rotate',dst)
cv2.imshow('origion',img1)
cv2.waitKey(0)

getRotationMatrix2D() 可以输出需要进行旋转变换的几何关系,用于下面的函数进行几何变换,该函数一共包含三个参数
第一个为旋转的中心。
第二个为旋转角度
第三为缩放比例
返回的结果为进行图像变换的矩阵

warpAffine() 一共函数五个参数。
第一个参数为进行几何变换的图片,
第二个为进行几何变换的关系矩阵
第三个为进行变换的中心坐标
第四个为边界填充的样式
第五个边界填充的颜色

你可能感兴趣的:(opencv练习)