python 实现代码旋转图像
时间: 2023-11-12 17:09:12 浏览: 50
以下是 Python 实现代码旋转图像的示例:
```python
import numpy as np
from PIL import Image
# 读取图片
img = Image.open('test.jpg')
# 转为 numpy 数组
img_arr = np.array(img)
# 图片旋转角度
angle = 45
# 计算旋转后的图片大小
rad = np.deg2rad(angle)
cos_theta, sin_theta = abs(np.cos(rad)), abs(np.sin(rad))
new_w = int(img_arr.shape[0] * cos_theta + img_arr.shape[1] * sin_theta)
new_h = int(img_arr.shape[1] * cos_theta + img_arr.shape[0] * sin_theta)
# 创建旋转后的空白图片
rotated_img = np.zeros((new_h, new_w, 3), dtype=np.uint8)
# 计算旋转中心点和偏移量
pivot_x, pivot_y = img_arr.shape[0] // 2, img_arr.shape[1] // 2
dx, dy = new_w // 2 - pivot_x, new_h // 2 - pivot_y
# 旋转图片
for i in range(new_h):
for j in range(new_w):
x, y = int(cos_theta * (j - dx) + sin_theta * (i - dy)), int(-sin_theta * (j - dx) + cos_theta * (i - dy))
if 0 <= x < img_arr.shape[1] and 0 <= y < img_arr.shape[0]:
rotated_img[i, j] = img_arr[y, x]
# 显示旋转后的图片
Image.fromarray(rotated_img).show()
# 保存旋转后的图片
Image.fromarray(rotated_img).save('rotated.jpg')
```
在这个示例中,我们使用了 numpy 和 PIL 库来读取和处理图片。我们首先将图片转换为 numpy 数组,然后计算旋转后的图片大小和旋转中心点和偏移量,最后使用两个 for 循环来旋转图片。旋转后的图片保存在一个新的 numpy 数组中并显示和保存。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)