python opencv 读取图片并进行旋转
时间: 2023-06-30 20:16:39 浏览: 171
可以使用 OpenCV 的 Python 接口,读取图片并进行旋转。以下是示例代码:
```python
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 获取图片宽度和高度
height, width = img.shape[:2]
# 设置旋转中心点
center = (width // 2, height // 2)
# 设置旋转角度
angle = 45
# 计算旋转矩阵
M = cv2.getRotationMatrix2D(center, angle, 1.0)
# 执行旋转操作
rotated = cv2.warpAffine(img, M, (width, height))
# 显示旋转后的图片
cv2.imshow('Rotated Image', rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,首先使用 `cv2.imread()` 函数读取图片,然后使用 `cv2.getRotationMatrix2D()` 函数计算旋转矩阵,最后使用 `cv2.warpAffine()` 函数执行旋转操作。注意,旋转角度是以逆时针方向为正方向的。
相关问题
python opencv读取文件夹里的图像旋转180度并保存
你可以按照以下步骤使用OpenCV在Python中读取文件夹中的图像,将其旋转180度并保存:
1. 导入OpenCV库
```python
import cv2
import os
```
2. 定义函数来旋转图像
```python
def rotate_image(image):
# 获取图像的宽度和高度
(h, w) = image.shape[:2]
# 计算旋转中心点的坐标
center = (w // 2, h // 2)
# 定义旋转角度为180度
angle = 180
# 通过指定旋转中心、旋转角度和缩放比例来构造旋转矩阵
M = cv2.getRotationMatrix2D(center, angle, 1.0)
# 应用旋转矩阵来旋转图像
rotated = cv2.warpAffine(image, M, (w, h))
# 返回旋转后的图像
return rotated
```
3. 遍历文件夹中的所有图像文件
```python
# 定义要读取的文件夹路径
folder_path = '/path/to/your/folder'
# 遍历文件夹中的所有图像文件
for filename in os.listdir(folder_path):
# 如果文件名以'.jpg'或'.png'结尾,则说明是图像文件
if filename.endswith('.jpg') or filename.endswith('.png'):
# 构造图像文件的完整路径
image_path = os.path.join(folder_path, filename)
# 读取图像文件
image = cv2.imread(image_path)
# 对图像进行旋转
rotated_image = rotate_image(image)
# 构造旋转后的图像文件的完整路径
rotated_image_path = os.path.join(folder_path, 'rotated_' + filename)
# 保存旋转后的图像文件
cv2.imwrite(rotated_image_path, rotated_image)
```
这样,文件夹中的所有图像文件都会被旋转180度并保存。
python opencv 图片上画有旋转角度矩形
在Python的OpenCV库中,你可以利用`cv2.getRotationMatrix2D()`函数计算旋转矩阵,然后使用`cv2.warpAffine()`函数将图片及其矩形按照指定的角度进行旋转。以下是一个简单的步骤:
1. 首先,你需要读取一张图片并确定要在其上绘制的矩形的位置和尺寸。
```python
import cv2
# 读取图片
img = cv2.imread('image.jpg')
```
2. 定义矩形的位置和大小以及旋转角度。例如,假设矩形左上角坐标为`(x, y)`,宽度和高度分别为`width`和`height`,旋转角度为`angle`(单位为度)。
```python
x, y, width, height = 50, 100, 200, 150
angle = 45
```
3. 计算旋转矩阵:
```python
center = (x + width // 2, y + height // 2) # 矩形中心点
rot_mat = cv2.getRotationMatrix2D(center, angle, 1.0) # 保持原图大小旋转
```
4. 创建一个新的旋转后的图像,并在上面绘制原来的矩形:
```python
rotated_img = cv2.warpAffine(img, rot_mat, img.shape[:2]) # 只旋转部分区域,保持原始大小
cv2.rectangle(rotated_img, (x, y), (x + width, y + height), color=(0, 255, 0), thickness=2)
```
5. 最后,显示原始图片和旋转后的图片:
```python
cv2.imshow('Original', img)
cv2.imshow('Rotated with Angle', rotated_img)
# 保存旋转后的图片
cv2.imwrite('rotated_image.jpg', rotated_img)
cv2.waitKey(0) # 等待用户按键
cv2.destroyAllWindows()
```
阅读全文