opencv 旋转图片 透明
时间: 2023-09-09 16:03:11 浏览: 146
在OpenCV中旋转图片并保持透明度可以通过以下几个步骤实现:
1. 读取图片并加载为4通道的BGRA格式:首先使用`cv2.imread()`函数读取图片,并使用`cv2.IMREAD_UNCHANGED`参数加载为原始的4通道BGRA格式。
2. 创建旋转矩阵:使用`cv2.getRotationMatrix2D()`函数创建一个旋转矩阵,该矩阵用于定义旋转角度、缩放因子和旋转中心。例如,可以设置旋转角度为45度,缩放因子为1.0,并将旋转中心设置为图像的中心。
3. 透明度通道分离:将加载的图像分离为颜色通道和透明度通道,其中颜色通道通过`img[:, :, :3]`获取,透明度通道通过`img[:, :, 3]`获取。
4. 进行旋转操作:使用`cv2.warpAffine()`函数进行旋转操作,将颜色通道和透明度通道分别进行旋转。
5. 合并颜色通道和透明度通道:使用`cv2.merge()`函数将旋转后的颜色通道和透明度通道合并为一个图像。
6. 显示旋转后的图片:使用`cv2.imshow()`函数显示旋转后的图片。
下面是一个示例代码:
```python
import cv2
# 读取原始图像
img = cv2.imread('example.png', cv2.IMREAD_UNCHANGED)
# 创建旋转矩阵
angle = 45
scale = 1.0
center = (img.shape[1] // 2, img.shape[0] // 2)
matrix = cv2.getRotationMatrix2D(center, angle, scale)
# 分离透明度通道
color_channels = img[:, :, :3]
alpha_channel = img[:, :, 3]
# 进行旋转操作
rotated_color_channels = cv2.warpAffine(color_channels, matrix, (img.shape[1], img.shape[0]))
rotated_alpha_channel = cv2.warpAffine(alpha_channel, matrix, (img.shape[1], img.shape[0]))
# 合并颜色通道和透明度通道
rotated_img = cv2.merge((rotated_color_channels, rotated_alpha_channel))
# 显示旋转后的图片
cv2.imshow("Rotated Image", rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
通过以上步骤,您就可以在OpenCV中旋转带有透明度的图片并保持其透明度。
阅读全文