加雨(雨天数据集制作)

加雨

1、读取图像

  • img = cv2.imread('demo.jpg')
    

    demo

2、根据图像生成随机噪声

  • 生成跟图像相同大小的噪声(均匀分布)

    noise = np.random.uniform(0, 256, img.shape[0:2])
    

    noise

  • 控制噪声水平,取浮点数,只保留最大的一部分作为噪声

    v = value * 0.01
    noise[np.where(noise < (256 - v))] = 0
    

    noise1

  • 噪声做初次模糊(高斯滤波)

    k = np.array([[0, 0.1, 0],
                  [0.1, 8, 0.1],
                  [0, 0.1, 0]])
    noise = cv2.filter2D(noise, -1, k)
    

    返回生成的噪声

3、对噪声加运动模糊

根据仿射变换得到模糊核

#获得仿射变化矩阵,由于对角阵自带45度的倾斜,所以减去了45度,三个参数分别表示:中心点的位置,旋转角度,等比例缩放
trans = cv2.getRotationMatrix2D((length/2, length/2), angle-45, 1-length/100.0)
#生成对角矩阵(雨线的长度)
dig = np.diag(np.ones(length))  
#生成模糊核,通过对对角矩阵的仿射变换,得到模糊核,三个参数分别表示为:对角矩阵,仿射变换矩阵,输出的大小
k = cv2.warpAffine(dig, trans, (length, length)) 

k

对模糊核进行高斯模糊,使得雨有宽度

k = cv2.GaussianBlur(k, (w, w), 0) #高斯模糊这个旋转后的对角核,使得雨有宽度,高斯矩阵为w*w, 0为方差

k1

将噪声与得到的模糊核进行卷积

blurred = cv2.filter2D(noise, -1, k)
cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)
blurred = np.array(blurred, dtype=np.uint8)

blurred

方法一、透明度赋值

rain_result = img.copy()
rain_result[:, :, 0] = rain_result[:, :, 0] * (255 - rain[:, :, 0])/255.0 + beta*rain[:, :, 0]
rain_result[:, :, 1] = rain_result[:, :, 1] * (255 - rain[:, :, 0])/255.0 + beta*rain[:, :, 0]
rain_result[:, :, 2] = rain_result[:, :, 2] * (255 - rain[:, :, 0])/255.0 + beta*rain[:, :, 0]

加雨的结果图为:

rain_effect

方法二、加权

rain = np.expand_dims(rain, 2)
rain = np.repeat(rain, 3, 2)
#加权合成新图
result = cv2.addWeighted(img, alpha, rain, 1-alpha, 1)

得到的雨天图像

epeat(rain, 3, 2)
#加权合成新图
result = cv2.addWeighted(img, alpha, rain, 1-alpha, 1)


得到的雨天图像

![addweight](https://img-blog.csdnimg.cn/img_convert/411ec1e333f24f045893453a6cb0dd40.png)
  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 59
    评论
要应用Rain and Water Drop Effects in Different Scenarios Using WebGL中的雨滴合成来生成雨天图像,您可以按照以下步骤进行操作: 1. 准备工作: - 确保您的项目中已经包含了WebGL的相关库和框架,例如Three.js。 - 创建一个WebGL场景,并加载您要应用雨滴效果的图像。 2. 雨滴合成: - 在场景中创建一个平面(例如一个正方形)作为雨滴效果的渲染目标。 - 使用一个或多个渲染通道来模拟雨滴效果。这些通道可以包括: - 雨滴纹理:使用一个包含雨滴形状的纹理来创建雨滴效果。您可以使用预先制作的纹理或者通过编程生成。 - 水滴纹理:使用另一个纹理来模拟水滴在表面上的效果。这个纹理可以包含透明度信息,以便后续的合成。 - 混合模式:将雨滴纹理和水滴纹理合成到渲染目标上,以实现真实的效果。 - 在场景中将渲染目标与原始图像进行合成,以生成带有雨滴效果的图像。 3. 其他效果: - 如果您希望在图像中添加其他雨天效果,可以尝试以下方法: - 调整雨滴纹理的颜色和透明度,以模拟不同的雨滴密度和大小。 - 使用模糊效果来模拟雨滴在镜头前方的模糊效果。 - 添加光线效果和反射效果来增强真实感。 请注意,这只是一个基本的指南,您可能需要根据您的具体需求进行一些调整和优化。此外,如果您对WebGL不熟悉,可能需要一些额外的学习和实践来应用这些效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值