首页 > V2EX > V2EX-如何使用 opencv 为图片添加“运动模糊”效果?
2022
05-15

V2EX-如何使用 opencv 为图片添加“运动模糊”效果?

ch2:

需求:使用 python 的 opencv 实现 adobe”方向模糊”同款效果,同时需要保留 png 的 alpha 通道
V2EX-如何使用 opencv 为图片添加“运动模糊”效果? - 第1张  | 牛C网(NiuL.Net)
已查阅到的的 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 图片?

from V2EX-最新主题 https://ift.tt/cNFzYtR
V2EX-如何使用 opencv 为图片添加“运动模糊”效果? - 第2张  | 牛C网(NiuL.Net)
牛C网:https://j1o.net
牛C网导航:https://niuc1.com
零九导航:https://09.gay

最后编辑:
作者:分享菌
这个作者貌似有点懒,什么都没有留下。

留下一个回复