
Python如何把图像旋转
用户关注问题
如何用Python调整图像的旋转角度?
我想用Python代码来旋转图像,但不清楚怎么指定旋转的角度,该如何实现?
使用PIL库调整图像旋转角度
可以使用Pillow(PIL的升级版)库中的Image模块,通过rotate()方法来旋转图像。rotate函数接受角度参数,单位是度,正值表示逆时针旋转。例如:
from PIL import Image
img = Image.open('example.jpg')
rotated_img = img.rotate(45) # 旋转45度
rotated_img.save('rotated_example.jpg')
这样即可将图像旋转指定角度,并保存旋转后的图像。
有没有Python库可以方便地对图像进行旋转处理?
除了PIL,还有其他库支持图像旋转操作吗?它们的使用方法是什么?
OpenCV库进行图像旋转的方法
OpenCV是功能强大的计算机视觉库,也支持图像旋转。可以通过cv2.getRotationMatrix2D函数创建旋转矩阵,再用cv2.warpAffine函数应用旋转变换。
示例代码:
import cv2
import numpy as np
img = cv2.imread('example.jpg')
(h, w) = img.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0) # 旋转45度,比例因子1.0
rotated_img = cv2.warpAffine(img, M, (w, h))
cv2.imwrite('rotated_example.jpg', rotated_img)
这样就完成了图像的旋转。
如何确保旋转后的图像不被裁剪?
我用Python旋转图像时发现,旋转后图像的部分内容会被切掉,怎么避免这种情况?
扩大画布以防止旋转图像被裁剪
默认旋转图像时,画布大小不变,导致旋转后内容超出边界被裁剪。可以先计算旋转后的图像尺寸,在调整画布大小后再旋转。
使用PIL时,可以将expand参数设置为True:
from PIL import Image
img = Image.open('example.jpg')
rotated_img = img.rotate(45, expand=True) # 自动扩大画布
rotated_img.save('rotated_expanded.jpg')
OpenCV中需要手动计算新的边界尺寸后,调整warpAffine函数的输出大小以包含全部旋转内容。