1. 缩放(Scale):
缩放是指改变图像的尺寸大小。在OpenCV中,可以使用`cv2.resize()`函数来实现图像的缩放操作。该函数接受源图像、目标图像大小以及插值方法作为参数。
示例代码:i
mport cv2# 读取图像image = cv2.imread('input.jpg')# 缩放图像resized_image = cv2.resize(image, (800, 600))# 显示图像cv2.imshow('Resized Image', resized_image)cv2.waitKey(0)cv2.destroyAllWindows()
2. 翻转(Flip):
翻转是指将图像按照水平或垂直方向进行镜像处理。在OpenCV中,可以使用`cv2.flip()`函数来实现图像的翻转操作。该函数接受源图像和翻转方式(0表示沿x轴翻转,1表示沿y轴翻转,-1表示同时沿x轴和y轴翻转)作为参数。
示例代码:
import cv2# 读取图像image = cv2.imread('input.jpg')# 水平翻转图像flipped_image = cv2.flip(image, 1)# 显示图像cv2.imshow('Flipped Image', flipped_image)cv2.waitKey(0)cv2.destroyAllWindows()
3. 仿射变换(Affine Transformation):
仿射变换是指通过线性变换和平移变换来改变图像的形状和位置。在OpenCV中,可以使用`cv2.warpAffine()`函数来实现仿射变换。该函数接受源图像、仿射矩阵以及目标图像大小作为参数。
示例代码:
import cv2import numpy as np# 读取图像image = cv2.imread('input.jpg')# 定义仿射矩阵matrix = np.float32([[1, 0, 100], [0, 1, 50]]) # 平移变换# 进行仿射变换affine_image = cv2.warpAffine(image, matrix, (image.shape[1], image.shape[0]))# 显示图像cv2.imshow('Affine Image', affine_image)cv2.waitKey(0)cv2.destroyAllWindows()
4. 透视变换(Perspective Transformation):
透视变换是指通过透视关系对图像进行形状的扭曲。在OpenCV中,可以使用`cv2.getPerspectiveTransform()`函数获取透视变换矩阵,并使用`cv2.warpPerspective()`函数来应用透视变换。该函数接受源图像、透视变换矩阵以及目标图像大小作为参数。
示例代码:
import cv2import numpy as np# 读取图像image = cv2.imread('input.jpg')# 定义原始图像中四个角点的坐标original_points = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])# 定义目标图像中对应的四个角点的坐标target_points = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]])# 计算透视变换矩阵perspective_matrix = cv2.getPerspectiveTransform(original_points, target_points)# 进行透视变换perspective_image = cv2.warpPerspective(image, perspective_matrix, (300, 300))# 显示图像cv2.imshow('Perspective Image', perspective_image)cv2.waitKey(0)cv2.destroyAllWindows()
5. 重映射(Remapping):
重映射是指根据给定的映射关系,将图像中的像素重新定位到目标图像中的位置上。在OpenCV中,可以使用`cv2.remap()`函数来实现重映射操作。该函数接受源图像、x方向映射矩阵(map_x)和y方向映射矩阵(map_y)作为参数。
示例代码:
import cv2import numpy as np# 读取图像image = cv2.imread('input.jpg')# 定义映射关系rows, cols = image.shape[:2]map_x = np.zeros((rows, cols), np.float32)map_y = np.zeros((rows, cols), np.float32)for i in range(rows):for j in range(cols):# 将像素点的位置重新定位到目标图像中map_x[i, j] = jmap_y[i, j] = i# 进行重映射remapped_image = cv2.remap(image, map_x, map_y, cv2.INTER_LINEAR)# 显示图像cv2.imshow('Remapped Image', remapped_image)cv2.waitKey(0)cv2.destroyAllWindows()