需求:使用 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 图片?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.