利用python和opencv批量给图像加噪声(椒盐噪声、高斯噪声、随机噪声)

导入头文件

import os
import cv2
import numpy as np
import random

添加椒盐噪声

def sp_noise(noise_img, proportion):'''添加椒盐噪声proportion的值表示加入噪声的量,可根据需要自行调整return: img_noise'''height, width = noise_img.shape[0], noise_img.shape[1]#获取高度宽度像素值num = int(height * width * proportion) #一个准备加入多少噪声小点for i in range(num):w = random.randint(0, width - 1)h = random.randint(0, height - 1)if random.randint(0, 1) == 0:noise_img[h, w] = 0else:noise_img[h, w] = 255return noise_img

添加高斯噪声

def gaussian_noise(img, mean, sigma):
'''此函数用将产生的高斯噪声加到图片上传入:img   :  原图mean  :  均值sigma :  标准差返回:gaussian_out : 噪声处理后的图片'''# 将图片灰度标准化img = img / 255# 产生高斯 noisenoise = np.random.normal(mean, sigma, img.shape)# 将噪声和图片叠加gaussian_out = img + noise# 将超过 1 的置 1,低于 0 的置 0gaussian_out = np.clip(gaussian_out, 0, 1)# 将图片灰度范围的恢复为 0-255gaussian_out = np.uint8(gaussian_out*255)# 将噪声范围搞为 0-255# noise = np.uint8(noise*255)return gaussian_out# 这里也会返回噪声,注意返回值

添加随机噪声

def random_noise(image,noise_num):'''添加随机噪点(实际上就是随机在图像上将像素点的灰度值变为255即白色)param image: 需要加噪的图片param noise_num: 添加的噪音点数目return: img_noise'''# 参数image:,noise_num:img_noise = image# cv2.imshow("src", img)rows, cols, chn = img_noise.shape# 加噪声for i in range(noise_num):x = np.random.randint(0, rows)#随机生成指定范围的整数y = np.random.randint(0, cols)img_noise[x, y, :] = 255return img_noise

读取并保存

该函数读取文件夹的原始图片,调用加噪声函数之后,接收返回值,并保存至指定文件下(批量操作)

def convert(input_dir, output_dir):for filename in os.listdir(input_dir):path = input_dir + "/" + filename # 获取文件路径print("doing... ", path)noise_img = cv2.imread(path)#读取图片img_noise = gaussian_noise(noise_img, 0, 0.12) # 高斯噪声# img_noise = sp_noise(noise_img,0.025)# 椒盐噪声#img_noise  = random_noise(noise_img,500)# 随机噪声cv2.imwrite(output_dir+'/'+filename,img_noise )

程序入口

input_dir为原图片(数据集)所在文件夹
output_dir为生成图片的存放路径

if __name__ == '__main__':input_dir = "C:/Users/15535/Desktop/picture"    # 输入数据文件夹output_dir = "C:/Users/15535/Desktop/out" # 输出数据文件夹convert(input_dir, output_dir)

Python+OpenCV批量给图片加噪声相关推荐

  1. python批量resize图片大小_python opencv 批量改变图片的尺寸大小的方法

    我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和opencv实现的. 以上为原图片. import cv2 import os # 按指定图像大小调整尺寸 def resi ...

  2. Python实现批量压缩图片

    Python实现批量压缩图片 本文为大家分享了Python实现批量压缩图片的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ _ ...

  3. Python:批量增强图片清晰度 ——基于百度API,含获取的AK、 SK的流程,access_token的获取流程,以及生成.exe文件

    Python:批量增强图片清晰度 --基于百度API,含获取的AK. SK的流程,access_token的获取流程,以及生成.exe文件 最近需要提高一些图片的清晰度,但一张张的去弄太费时间了,所以 ...

  4. Python OpenCV 批量修改文件夹内所有图片的尺寸

    Python OpenCV 批量修改文件夹内所有图片的尺寸 简述 插件 遍历所有文件(包括子文件) 缩放图片尺寸并保存图片 遍历并修改图片 简述 遍历文件夹下的所有子文件(包括自文件夹内的)的图片批量 ...

  5. 怎么批量给图片加纯色边框?

    如何给图片加纯色边框?相信很多小伙伴都觉得很简单,用ps软件给图片描边即可完成.给图片添加边框后图片会变得更美观,所以工作中经常遇见,边框有很多种,如图片边框和纯色边框.那么如何批量给图片加纯色边框呢 ...

  6. python+opencv将表格图片按照表格框线分割、识别

    如下小程序为使用python+opencv将表格图片,按照表格进行分割,并识别分割后的子图片中的文字,希望对需要的小伙伴有一些些帮助.具体的实现见如下代码. # -*- coding: utf-8 - ...

  7. 教你怎么批量给图片加水印

    我们在日常的生活或者学习中,有些小伙伴喜欢将自己设计的图片或者摄影作品在互联网上分享发布,但发现一些图片会被别人恶意盗用,还在图片上打标签水印.这时候我们需要保护自己的知识产权,需要在图片发布前加上自 ...

  8. 如何批量给图片加边框?

    不管是在日常工作还是生活学习中,我们经常需要对图片进行处理,比如给图片加上边框,给图片加边框是一项简单的工作,只要使用PS软件就可以帮我们解决问题,相信大部分的小伙伴知道怎么操作,小编就不做详细的介绍 ...

  9. 如何快速批量给图片加logo?

    如今人们的版权意识比较强,将自己的作品上传到网上时都注重声明版权所有,所以我们可以看到很多图片上都有logo水印的存在.将logo加在图片上是水印的一种形式,PS就可以帮我们实现这个,具体方法就不做介 ...

最新文章

  1. weblogic公布的项目用途myeclipse正常启动,点击startWeblogic.cmd报错解决方案
  2. Python之目录结构
  3. 计算机打印机用户,如何:在 Windows 窗体中选择连接到用户计算机的打印机
  4. c语言二次函数拟合,二次函数拟合算法
  5. LocalStorage 的一个漏洞
  6. mysql-5.7.24-linux_Linux下安装mysql-5.7.24
  7. php 新浪ip接口,php利用新浪接口查询ip获取地理位置示例
  8. 洛谷OJ P1036 选数
  9. [转贴]搜索引擎优化(SEO)菜鸟版@搜索引擎研究专案
  10. 球体重量在线计算机,材料重量计算器
  11. 抽数,数据抽取,增量数据的抽取方式
  12. vue导航使用及页面布局样例
  13. 微信H5页面图片上传避坑指南(vant+vue)
  14. 面向对象:感受温柔,领略山河,遇见不容易,喜欢望珍惜
  15. 建模人必备的C4D素材网站,解决你的创作问题
  16. 网络编程+go+java,Go语言中的TCP/IP网络编程
  17. 带领你打开C++神秘之门--入门篇
  18. python爬虫采集京东商品评价
  19. Tensorflow下利用Deeplabv3+训练自己的数据(超详细完整版)
  20. SUN J2EE企业应用技术学习计划

热门文章

  1. 现在什么浏览器最好用?
  2. shell脚本中的等于和不等于
  3. 小程序提示框_科汛网校V6小程序增加绑定账号功能
  4. FFmpeg推送命令
  5. Bada学习-(七)应用状态转换
  6. WPS公式编辑器编辑出来的公式和后面的编号对不齐的问题
  7. Pytorch 深度学习实战教程:今天,你垃圾分类了吗?
  8. hdu 4859 海岸线 Bestcoder Round 1
  9. 记一次foxmail企业邮箱忘记密码
  10. 不用加减乘除做加法运算