python实现图片任意角度旋转且没有黑边的代码
时间: 2023-11-09 13:06:59 浏览: 114
以下是Python实现图片任意角度旋转且没有黑边的代码:
```python
import cv2
import numpy as np
def rotate_image(image, angle):
# 获取图像尺寸
height, width = image.shape[:2]
# 计算旋转后图像尺寸
new_width = int(width * np.abs(np.cos(angle)) + height * np.abs(np.sin(angle)))
new_height = int(height * np.abs(np.cos(angle)) + width * np.abs(np.sin(angle)))
# 构造旋转矩阵
matrix = cv2.getRotationMatrix2D((width / 2, height / 2), angle, 1)
# 计算平移量
tx = (new_width - width) / 2
ty = (new_height - height) / 2
matrix[0, 2] += tx
matrix[1, 2] += ty
# 执行旋转
rotated_image = cv2.warpAffine(image, matrix, (new_width, new_height), borderValue=(255, 255, 255))
return rotated_image
```
该函数接受两个参数:待旋转的图像和旋转角度。通过调用OpenCV的`getRotationMatrix2D()`函数来构造旋转矩阵,然后计算平移量,最后调用`warpAffine()`函数来执行旋转。在`warpAffine()`函数中,通过设置`borderValue`参数为白色(255, 255, 255)来避免旋转后出现黑边。
阅读全文