需求:使用 python 的 opencv 实现 adobe"方向模糊"同款效果,同时需要保留 png 的 alpha 通道

已查阅到的的 motion blur 实现会使得带 alpha 通道的图片异常,生成的产物是一片白的
# -*- coding: utf-8 -*-
import numpy as np
import cv2
from PIL import Image
def motion_blur(image, degree=3, angle=90):
image=image.convert("RGB")
array=np.asarray(image)
image=cv2.cvtColor(array,cv2.COLOR_RGB2BGR)
image = np.array(image)
M = cv2.getRotationMatrix2D((degree / 2, degree / 2), angle, 1)
motion_blur_kernel = np.diag(np.ones(degree))
motion_blur_kernel = cv2.warpAffine(motion_blur_kernel, M, (degree, degree))
motion_blur_kernel = motion_blur_kernel / degree
blurred = cv2.filter2D(image, -1, motion_blur_kernel)
cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)
blurred = np.array(blurred, dtype=np.uint8)
blurred=Image.fromarray(cv2.cvtColor(blurred, cv2.COLOR_BGR2RGB),mode="RGB")
return blurred
本人不熟悉图像处理的算法,想请教一下如何改进完善这个算法使其支持带有 alpha 通道的 png 图片?