python opencv获取图像进行几何变换(缩放,平移,翻转)
时间: 2024-03-26 08:29:26 浏览: 208
1. 缩放
缩放指的是将原始图像按比例缩小或放大。OpenCV中提供了resize()函数来实现缩放操作。
语法:
dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
参数说明:
- src:原始图像。
- dsize:输出图像大小。
- fx:水平方向缩放比例。
- fy:垂直方向缩放比例。
- interpolation:插值方法。常用的有cv2.INTER_LINEAR(双线性插值)和cv2.INTER_NEAREST(最近邻插值)。
示例代码:
import cv2
img = cv2.imread('lena.png')
# 缩小图像
dst = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 平移
平移指的是将原始图像沿着水平或垂直方向移动一定的距离。OpenCV中提供了warpAffine()函数来实现平移操作。
语法:
dst = cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
参数说明:
- src:原始图像。
- M:变换矩阵,可以通过cv2.getAffineTransform()或cv2.getPerspectiveTransform()函数获取。
- dsize:输出图像大小。
- flags:插值方法和变换标志。常用的有cv2.INTER_LINEAR和cv2.WARP_FILL_OUTLIERS。
- borderMode:边界填充方法。常用的有cv2.BORDER_CONSTANT和cv2.BORDER_REPLICATE。
- borderValue:边界填充颜色。
示例代码:
import cv2
import numpy as np
img = cv2.imread('lena.png')
rows, cols = img.shape[:2]
# 定义平移矩阵
M = np.float32([[1, 0, 100], [0, 1, 50]])
# 平移图像
dst = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 翻转
翻转指的是将原始图像沿着水平或垂直方向翻转。OpenCV中提供了flip()函数来实现翻转操作。
语法:
dst = cv2.flip(src, flipCode[, dst])
参数说明:
- src:原始图像。
- flipCode:翻转方式。0表示沿x轴翻转(水平翻转),1表示沿y轴翻转(垂直翻转),-1表示沿x轴和y轴同时翻转(水平垂直翻转)。
示例代码:
import cv2
img = cv2.imread('lena.png')
# 水平翻转
dst1 = cv2.flip(img, 0)
# 垂直翻转
dst2 = cv2.flip(img, 1)
# 水平垂直翻转
dst3 = cv2.flip(img, -1)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.imshow('dst3', dst3)
cv2.waitKey(0)
cv2.destroyAllWindows()
阅读全文