OpenCV 图像旋转、平移、缩放



OpenCV是一个强大的计算机视觉库,它提供了许多图像处理和计算机视觉功能。以下是使用OpenCV进行图像旋转、平移和缩放的基本方法:

  1. 图像旋转

图像旋转是通过设置旋转中心、旋转角度和旋转后的缩放因子来实现的。在OpenCV中,你可以使用cv2.getRotationMatrix2D函数获取旋转矩阵,然后使用cv2.warpAffine函数进行旋转。

import cv2  
import numpy as np  
  
image = cv2.imread('image.jpg')  
  
# 设置旋转中心, 旋转角度和缩放因子  
center = (image.shape[1] / 2, image.shape[0] / 2)  
angle = 45  # 旋转45度  
scale = 1.0  # 不进行缩放  
  
# 获取旋转矩阵  
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)  
  
# 使用warpAffine进行变换,第二个参数是旋转矩阵,第三个参数是输出图像的尺寸  
rotated_image = cv2.warpAffine(image, rotation_matrix, image.shape[::-1])  
  
cv2.imshow('Rotated Image', rotated_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()
  1. 图像平移

图像平移是通过设置平移矩阵来实现的。你可以使用cv2.warpAffine函数进行平移。

import cv2  
import numpy as np  
  
image = cv2.imread('image.jpg')  
  
# 设置平移矩阵  
shift_matrix = np.float32([[1, 0, 100], [0, 1, 50]])  # 平移100个像素到右边,50个像素到下面  
  
# 使用warpAffine进行变换  
shifted_image = cv2.warpAffine(image, shift_matrix, image.shape[::-1])  
  
cv2.imshow('Shifted Image', shifted_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()
  1. 图像缩放

图像缩放是通过cv2.resize函数实现的。这个函数需要输入图像、输出图像的大小以及插值方法。

import cv2  
  
image = cv2.imread('image.jpg')  
  
# 设置新的图像大小  
new_dimensions = (800, 800)  # 新的图像大小为800x800像素  
  
# 使用resize函数进行缩放,第三个参数是新的图像大小,第四个参数是插值方法,这里选择线性插值  
resized_image = cv2.resize(image, new_dimensions, interpolation=cv2.INTER_LINEAR)  
  
cv2.imshow('Resized Image', resized_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

以上是使用OpenCV进行图像的旋转、平移和缩放的基本方法。请注意,这些操作可能会导致图像的一些部分被剪切或者出现空白区域,这取决于你的具体设置和输入图像的大小。