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