Python-OpenCV 笔记5 – 几何变换(Geometric Transformations)
1、缩放(Scaling)
# 函数原型
cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
# 实例
cv2.resize(img,None,fx=2, fy=2)
height, width = img.shape[:2]
res = cv2.resize(img,(2*width, 2*height))
- dsize:输出图片的尺寸
- fx:x轴缩放因子
- fy:x轴缩放因子
- interpolation:插值方法
2、平移(Translation)
# 实例,x轴平移100,y轴平移50
rows, cols = img.shape
M = np.float32([[1,0,100],[0,1,50]])
dst = cv2.warpAffine(img,M,(cols,rows))
3、旋转(Rotation)
# 函数原型
getRotationMatrix2D(center, angle, scale)
# 实例
rows,cols = img.shape
# 注意减1
M = cv.getRotationMatrix2D(((cols-1)/2.0,(rows-1)/2.0), 90, 1)
dst = cv.warpAffine(img,M,(cols,rows))
- center:旋转中心
- angle: 旋转角度(°),正值代表顺时针(默认为左上角).
- scale:缩放比例
4、仿射变换(Affine Transformation)
# 函数原型
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]] )
# 实例
rows,cols,ch = img.shape
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
# 获取变换矩阵
M = cv2.getAffineTransform(pts1, pts2)
# 进行仿射变换
dst = cv2.warpAffine(img, M, (cols,rows))
5、透视变换(Perspective Transformation)
# 函数原型
warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
# 实例
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(300,300))