opencv图像旋转(opencv图像旋转指定角度不改变大小)

## OpenCV 图像旋转### 简介OpenCV 是一个强大的开源计算机视觉库,提供了丰富的图像处理功能,其中图像旋转是常用的操作之一。旋转图像意味着将图像围绕其中心点或指定点进行旋转一定角度。### 图像旋转方法OpenCV 提供了多种方法进行图像旋转,以下是其中两种常用的方法:#### 1. 使用 `cv2.getRotationMatrix2D` 和 `cv2.warpAffine`

步骤:

1. 使用 `cv2.getRotationMatrix2D` 函数计算旋转矩阵,该函数接受三个参数:

`center`: 旋转中心点的坐标。

`angle`: 旋转角度(以度为单位)。

`scale`: 缩放比例(默认值为 1)。2. 使用 `cv2.warpAffine` 函数将图像应用旋转矩阵进行仿射变换。

示例代码:

```python import cv2 import numpy as np# 加载图像 img = cv2.imread('image.jpg')# 定义旋转中心点、角度和缩放比例 center = (img.shape[1] // 2, img.shape[0] // 2) angle = 45 scale = 1# 计算旋转矩阵 M = cv2.getRotationMatrix2D(center, angle, scale)# 应用旋转矩阵进行仿射变换 rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))# 显示旋转后的图像 cv2.imshow('Rotated Image', rotated_img) cv2.waitKey(0) cv2.destroyAllWindows() ```#### 2. 使用 `cv2.rotate` 函数

步骤:

1. 使用 `cv2.rotate` 函数直接旋转图像,该函数接受两个参数:

`src`: 输入图像。

`code`: 旋转代码,可以使用以下三个常量:

`cv2.ROTATE_90_CLOCKWISE`: 顺时针旋转 90 度。

`cv2.ROTATE_180`: 旋转 180 度。

`cv2.ROTATE_90_COUNTERCLOCKWISE`: 逆时针旋转 90 度。

示例代码:

```python import cv2# 加载图像 img = cv2.imread('image.jpg')# 顺时针旋转 90 度 rotated_img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)# 显示旋转后的图像 cv2.imshow('Rotated Image', rotated_img) cv2.waitKey(0) cv2.destroyAllWindows() ```### 注意事项

旋转后的图像尺寸可能发生变化,需要根据实际情况调整输出图像尺寸。

旋转角度可以是正数(顺时针旋转)或负数(逆时针旋转)。

使用 `cv2.warpAffine` 方法可以进行更灵活的仿射变换,例如平移、缩放和剪切。### 总结OpenCV 提供了多种方法进行图像旋转,选择哪种方法取决于您的具体需求。您可以根据实际情况选择合适的旋转方法,并使用示例代码进行调整和优化。

OpenCV 图像旋转

简介OpenCV 是一个强大的开源计算机视觉库,提供了丰富的图像处理功能,其中图像旋转是常用的操作之一。旋转图像意味着将图像围绕其中心点或指定点进行旋转一定角度。

图像旋转方法OpenCV 提供了多种方法进行图像旋转,以下是其中两种常用的方法:

1. 使用 `cv2.getRotationMatrix2D` 和 `cv2.warpAffine`* **步骤:**1. 使用 `cv2.getRotationMatrix2D` 函数计算旋转矩阵,该函数接受三个参数:* `center`: 旋转中心点的坐标。* `angle`: 旋转角度(以度为单位)。* `scale`: 缩放比例(默认值为 1)。2. 使用 `cv2.warpAffine` 函数将图像应用旋转矩阵进行仿射变换。* **示例代码:**```python import cv2 import numpy as np

加载图像 img = cv2.imread('image.jpg')

定义旋转中心点、角度和缩放比例 center = (img.shape[1] // 2, img.shape[0] // 2) angle = 45 scale = 1

计算旋转矩阵 M = cv2.getRotationMatrix2D(center, angle, scale)

应用旋转矩阵进行仿射变换 rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

显示旋转后的图像 cv2.imshow('Rotated Image', rotated_img) cv2.waitKey(0) cv2.destroyAllWindows() ```

2. 使用 `cv2.rotate` 函数* **步骤:**1. 使用 `cv2.rotate` 函数直接旋转图像,该函数接受两个参数:* `src`: 输入图像。* `code`: 旋转代码,可以使用以下三个常量:* `cv2.ROTATE_90_CLOCKWISE`: 顺时针旋转 90 度。* `cv2.ROTATE_180`: 旋转 180 度。* `cv2.ROTATE_90_COUNTERCLOCKWISE`: 逆时针旋转 90 度。* **示例代码:**```python import cv2

加载图像 img = cv2.imread('image.jpg')

顺时针旋转 90 度 rotated_img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

显示旋转后的图像 cv2.imshow('Rotated Image', rotated_img) cv2.waitKey(0) cv2.destroyAllWindows() ```

注意事项* 旋转后的图像尺寸可能发生变化,需要根据实际情况调整输出图像尺寸。 * 旋转角度可以是正数(顺时针旋转)或负数(逆时针旋转)。 * 使用 `cv2.warpAffine` 方法可以进行更灵活的仿射变换,例如平移、缩放和剪切。

总结OpenCV 提供了多种方法进行图像旋转,选择哪种方法取决于您的具体需求。您可以根据实际情况选择合适的旋转方法,并使用示例代码进行调整和优化。

标签列表