Python OpenCV 图像旋转
时间: 2023-08-27 17:24:18 浏览: 104
可以使用OpenCV库来进行图像旋转操作。以下是一个简单的示例代码:
```python
import cv2
# 读取原始图像
img = cv2.imread('example.jpg')
# 获取图像的宽度和高度
height, width = img.shape[:2]
# 定义旋转中心
center = (width / 2, height / 2)
# 定义旋转角度
angle = 45
# 定义缩放比例
scale = 1
# 获取旋转矩阵
M = cv2.getRotationMatrix2D(center, angle, scale)
# 对图像进行旋转操作
rotated_img = cv2.warpAffine(img, M, (width, height))
# 显示旋转后的图像
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
# 保存旋转后的图像
cv2.imwrite('example_rotated.jpg', rotated_img)
```
在上面的代码中,我们首先使用`cv2.imread()`方法读取原始图像,然后使用`shape`属性获取图像的宽度和高度。接着定义旋转中心、旋转角度、缩放比例,并使用`cv2.getRotationMatrix2D()`方法获取旋转矩阵。最后,使用`cv2.warpAffine()`方法对图像进行旋转操作,并使用`cv2.imshow()`方法显示旋转后的图像,使用`cv2.imwrite()`方法保存旋转后的图像。
相关问题
python opencv图片旋转
Python中使用OpenCV进行图片旋转非常简单。我们可以使用cv2库中的`getRotationMatrix2D`和`warpAffine`函数来实现图片旋转。
首先,我们需要导入`cv2`库:
```python
import cv2
```
然后,我们可以使用`cv2.imread`函数来读取一张图片,并存储在一个变量中:
```python
image = cv2.imread("image.jpg")
```
下一步,我们需要指定旋转的角度和旋转中心点。角度可以是正值或负值,表示顺时针或逆时针旋转。旋转中心点是一个元组,表示图片的像素坐标。
```python
angle = 45
center = (image.shape[1] // 2, image.shape[0] // 2)
```
接下来,我们可以使用`cv2.getRotationMatrix2D`函数来获取一个旋转矩阵:
```python
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0)
```
最后,我们可以使用`cv2.warpAffine`函数来应用旋转矩阵并实现图片旋转:
```python
rotated_image = cv2.warpAffine(image, rotation_matrix, (image.shape[1], image.shape[0]))
```
现在,`rotated_image`变量中存储了旋转后的图片。我们可以使用`cv2.imshow`函数来显示旋转后的图片:
```python
cv2.imshow("Rotated Image", rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上就是使用Python和OpenCV进行图片旋转的简单示例。希望对您有帮助!
python opencv图像旋转90度
### 回答1:
使用OpenCV在Python中旋转图像90度可以使用以下代码:
```
import cv2
import numpy as np
img = cv2.imread("input.jpg")
rows,cols = img.shape[:2]
M = cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
dst = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow("rotated", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
### 回答2:
要将图像旋转90度,我们可以使用Python中的OpenCV库。旋转图像的方法是使用cv2.roate()函数。使用此函数,需要设置三个参数:
- src: 输入图像;
- angle: 旋转的角度;
- scale: 缩放因子。
例如,以下代码演示了如何将图像逆时针旋转90度。
```python
import cv2
# 读入图像
img = cv2.imread('image.jpg')
# 获取图像宽高
h, w = img.shape[:2]
# 设置旋转的中心和旋转角度
center = (w // 2, h // 2)
angle = -90
# 计算缩放因子
scale = 1.0
# 获取旋转矩阵
M = cv2.getRotationMatrix2D(center, angle, scale)
# 进行图像旋转
dst = cv2.warpAffine(img, M, (w, h))
# 显示旋转后的图像
cv2.imshow('Rotated Image', dst)
# 等待按键退出
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读入图像,然后对其进行旋转。我们计算图像的中心点和旋转角度,并使用getRotationMatrix2D()函数计算旋转矩阵。最后,我们使用warpAffine()函数进行旋转,并使用imshow()函数显示旋转后的图像。最后,使用waitKey()等待按键退出。
### 回答3:
Python上使用OpenCV进行图像旋转的方法如下:
1. 导入必要的Python模块
首先,我们需要导入必要的Python模块:cv2和numpy
```
import cv2
import numpy as np
```
2. 读取图像
使用cv2.imread函数读取需要旋转的图像。
```
img = cv2.imread('image.jpg')
```
3. 设定旋转角度
确定需要旋转的角度,这里以逆时针旋转90度为例,设定旋转角度为-90。
```
rot_angle = -90
```
4. 计算旋转后的图像尺寸
通过OpenCV提供的函数cv2.getRotationMatrix2D计算旋转后的图像尺寸。
```
(height, width) = img.shape[:2]
center = (width / 2, height / 2)
M = cv2.getRotationMatrix2D(center, rot_angle, 1.0)
new_width = int(height * abs(M[0, 1]) + width * abs(M[0, 0]))
new_height = int(height * abs(M[0, 0]) + width * abs(M[0, 1]))
```
5. 进行旋转操作
使用cv2.warpAffine函数进行旋转操作,将图像映射到新的尺寸。
```
M[0, 2] += (new_width - width) / 2
M[1, 2] += (new_height - height) / 2
rotated = cv2.warpAffine(img, M, (new_width, new_height), borderValue=(255, 255, 255))
```
其中,borderValue参数为边缘填充值。
6. 显示并保存旋转后的图像
使用cv2.imshow函数显示旋转后的图像,并使用cv2.waitKey等待按键操作。最后使用cv2.imwrite保存旋转后的图像。
```
cv2.imshow('Rotated', rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('rotated_image.jpg', rotated)
```
这是对一张名为"image.jpg"的图片进行逆时针旋转90度,并将新图像保存为"rotated_image.jpg"的完整代码。
阅读全文