使用python对图像加噪声

加上雨点噪声

import cv2
import numpy as npdef get_noise(img, value=10):'''#生成噪声图像>>> 输入: img图像value= 大小控制雨滴的多少 >>> 返回图像大小的模糊噪声图像'''noise = np.random.uniform(0, 256, img.shape[0:2])# 控制噪声水平,取浮点数,只保留最大的一部分作为噪声v = value * 0.01noise[np.where(noise < (256 - v))] = 0# 噪声做初次模糊k = np.array([[0, 0.1, 0],[0.1, 8, 0.1],[0, 0.1, 0]])noise = cv2.filter2D(noise, -1, k)# 可以输出噪声看看'''cv2.imshow('img',noise)cv2.waitKey()cv2.destroyWindow('img')'''return noisedef rain_blur(noise, length=10, angle=0,w=1):'''将噪声加上运动模糊,模仿雨滴>>>输入noise:输入噪声图,shape = img.shape[0:2]length: 对角矩阵大小,表示雨滴的长度angle: 倾斜的角度,逆时针为正w:      雨滴大小>>>输出带模糊的噪声'''#这里由于对角阵自带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 = cv2.GaussianBlur(k,(w,w),0)    #高斯模糊这个旋转后的对角核,使得雨有宽度#k = k / length                         #是否归一化blurred = cv2.filter2D(noise, -1, k)    #用刚刚得到的旋转后的核,进行滤波#转换到0-255区间cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)blurred = np.array(blurred, dtype=np.uint8)return blurreddef alpha_rain(rain,img,beta = 0.8):#输入雨滴噪声和图像#beta = 0.8   #results weight#显示下雨效果#expand dimensin#将二维雨噪声扩张为三维单通道#并与图像合成在一起形成带有alpha通道的4通道图像rain = np.expand_dims(rain,2)rain_effect = np.concatenate((img,rain),axis=2)  #add alpha channelrain_result = img.copy()    #拷贝一个掩膜rain = np.array(rain,dtype=np.float32)     #数据类型变为浮点数,后面要叠加,防止数组越界要用32位rain_result[:,:,0]= rain_result[:,:,0] * (255-rain[:,:,0])/255.0 + beta*rain[:,:,0]rain_result[:,:,1] = rain_result[:,:,1] * (255-rain[:,:,0])/255 + beta*rain[:,:,0] rain_result[:,:,2] = rain_result[:,:,2] * (255-rain[:,:,0])/255 + beta*rain[:,:,0]#对每个通道先保留雨滴噪声图对应的黑色(透明)部分,再叠加白色的雨滴噪声部分(有比例因子)cv2.imwrite('rain_result.png', np.uint8(rain_result))img = cv2.imread('cv.png')
noise = get_noise(img,value=500)
rain = rain_blur(noise,length=50,angle=-30,w=3)
alpha_rain(rain,img,beta=0.6)

在这里插入图片描述

在这里插入图片描述

加上光斑噪声

利用一张光斑的图像加在原始图像上:

import numpy as np
import cv2
from PIL import Imageimage1 = cv2.imread('cub1.jpg')
image2 = cv2.imread('ban.jpg')height = image1.shape[0]
width = image1.shape[1]
image2 = cv2.resize(image2, (width, height), interpolation = cv2.INTER_LINEAR)
image = (image1 + image2) // 2cv2.imwrite('cv.png', np.uint8(image))

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/35612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谁能讲清楚Spark之与MapReduce的对比

我们已经知道Spark是如何设计和实现数据处理流程的,这里我们 再深入思考一下,为什么Spark能够替代MapReduce成为主流的大数据处理框架呢?对比MapReduce,Spark究竟有哪些优势? 一 优势 1 通用性: 基于函数式编程思想,MapReduce将数据类型抽象为,k,v格式,并将数据处理…

Spring Boot单元测试使用MockBean注解向Service注入Mock对象

1. 背景介绍 我们在测试时有一个Service&#xff0c;我们需要测试Service&#xff0c;但Service内部依赖ServiceA、ServiceB&#xff0c;此时我们希望Mock ServiceA&#xff0c;ServiceB 注入真实对象。 class Service {private ServiceA A;private ServiceB B;public int me…

OPENCV C++(十二)模板匹配

正常模板匹配函数 matchTemplate(img, templatee, resultMat, 0);//模板匹配 这里0代表的是方法&#xff0c;一般默认为0就ok img是输入图像 templatee是模板 resultmat是输出 1、cv::TM_SQDIFF&#xff1a;该方法使用平方差进行匹配&#xff0c;因此最佳的匹配结果在结果为…

Excel(1):表头或列头冻结

1.需求 对于较大的excel&#xff0c;通常需要固定一部分内容&#xff0c;另一份内容为可翻动。 2.解决方式 在视图中选择冻结窗格&#xff0c;需要注意的是&#xff0c;选择冻结窗格时&#xff0c;窗格的左上方的表格区域是固定不动的&#xff0c;只可以向下或者向右活动。

8.10论文阅读

文章目录 The multimodal MRI brain tumor segmentation based on AD-Net摘要本文方法损失函数 实验结果 max-vit - unet:多轴注意力医学图像分割摘要本文方法实验结果 The multimodal MRI brain tumor segmentation based on AD-Net 摘要 基于磁共振成像(MRI)的多模态胶质瘤…

Redis分布式锁问题

1、业务单机情况下 问题&#xff1a;并发没有加锁导致线程安全问题。 解决方法&#xff1a;加锁处理&#xff0c;如lock、synchronized 仍有问题&#xff1a;业务分布式情况下&#xff0c;代码级别加锁已经无效。需要借助第三方组件&#xff0c;如redis、zookeeper。 2、业务分…

云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初步使用(二)

前言&#xff1a; 在前面一篇文章云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初始安装&#xff08;一&#xff09;_华为cna_晚风_END的博客-CSDN博客 介绍了基于VMware虚拟机里嵌套部署华为云的云计算&#xff0c;不过仅仅是做到了在VRM的web界面添加计算节点…

Kubernetes的默认调度和自定义调度详解

默认调度和自定义调度详解 默认调度 默认调度是 Kubernetes 中的内置机制&#xff0c;它使用调度器组件来管理分配容器的节点。调度器依据以下原则选择合适的节点&#xff1a; 资源需求 &#xff1a;调度器会为每个 Pod 根据其 CPU 和内存需求选择一个具有足够资源的节点。亲…

Android使用kotlin+协程+room数据库的简单应用

前言&#xff1a;一般主线程&#xff08;UI线程&#xff09;中是不能执行创建数据这些操作的&#xff0c;因为等待时间长。所以协程就是为了解决这个问题出现。 第一步&#xff1a;在模块级的build.gradle中引入 id com.android.application// roomid kotlin-androidid kotlin…

Mysql主从分离

一、前言 某个应用场景中&#xff0c;在操作数据库这部分&#xff0c;往往是数据库的读取往往大于数据库的写入&#xff0c;当读取数据达到数据库的瓶颈时&#xff0c;性能下滑&#xff0c;影响数据的写入&#xff0c;导致整个应用的不可用。为了解决这个问题&#xff0c;这时&…

单片机直驱两相四线步进电机研究

【本文发布于https://blog.csdn.net/Stack_/article/details/132236329&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 双极性步进电机&#xff08;两相四线步进电机&#xff09;&#xff0c;原理的东西就先不讲太多了&#xff0c;还没搞清楚&#xff0c;边查资料边…

jsoup解析html之table表格

jsoup解析html之table表格 jsoup说明 一款Java 的HTML解析器 jsoup 是一款Java 的HTML解析器&#xff0c;可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API&#xff0c;可通过DOM&#xff0c;CSS以及类似于jQuery的操作方法来取出和操作数据。 主要功能 从一…

Python Opencv实践 - 图像旋转

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#图像旋转 #Opencv中的旋转&#xff0c;首先通过cv.getRotationMatrix2D获得旋转矩阵 #cv.getRotationMatrix2D(center,ang…

Mr. Cappuccino的第62杯咖啡——Spring之Bean的生命周期

Spring之Bean的生命周期 Aware接口项目结构项目代码运行结果源代码使用场景 InitializingBean接口项目结构项目代码运行结果源代码 BeanFactoryPostProcessor接口项目结构项目代码运行结果源代码 Bean的生命周期项目结构项目代码运行结果源代码 Aware接口 实现Aware接口是为了…

微信小程序实现图片多点裁剪

话不多说&#xff0c;直接上代码 1、页面布局 <view class"buttons" style"height: 50px;"><view class"upload btn" style"background-color: #d18118;"bindtap"uploadImage"> 上传图片 </view><vie…

机器视觉项目流程和学习方法

机器视觉项目流程&#xff1a; 00001. 需求分析和方案建立 00002. 算法流程规划和业务逻辑设计 00003. 模块化编程和集成化实现 00004. 调试和优化&#xff0c;交付客户及文档 学习机器视觉的方法&#xff1a; 00001. 实战学习&#xff0c;结合项目经验教训 00002. 学习…

c++参数传递

函数的参数传递 指的是形参与实参结合的过程&#xff0c;其基本方式包括值传递和引用传递两种。 值传递 该方法把参数的实际值复制给函数的形式参数。在这种情况下&#xff0c;修改函数内的形式参数对实际参数没有影响 #include<iostream> using namespace std;void swap…

NAS搭建指南二——影视资源中心

1. 刮削 这一部分是利用 tinyMediaManager 进行影视资源的评分、简介以及图片的搜集工作tinyMediaManager 官方网站地址下载及安装过程&#xff1a;略我的主要修改的设置项如下所示&#xff1a; 使用方法&#xff1a; a. 点击更新媒体库 b. 选择影片–>右键单击–>…

时序预测 | MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 Matlab实现BiLST…

C++中的回调函数

1.普通函数作为回调函数 #include <iostream>void programA_FunA1() { printf("Iam ProgramA_FunA1 and be called..\n"); }void programA_FunA2() { printf("Iam ProgramA_FunA2 and be called..\n"); }void programB_FunB1(void (*callback)()) {…