OpenCV3.3+Python3.6实现图片高斯模糊


Posted in Python onMay 18, 2021

本文实例为大家分享了OpenCV3.3+Python3.6实现图片高斯模糊的具体代码,供大家参考,具体内容如下

高斯模糊

高斯模糊(英语:Gaussian Blur),通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。高斯模糊也用于计算机视觉算法中的预先处理阶段,以增强图像在不同比例大小下的图像效果(参见尺度空间表示以及尺度空间实现)。 从数学的角度来看,图像的高斯模糊过程就是图像与正态分布做卷积。由于正态分布又叫作高斯分布,所以这项技术就叫作高斯模糊。图像与圆形方框模糊做卷积将会生成更加精确的焦外成像效果。由于高斯函数的傅立叶变换是另外一个高斯函数,所以高斯模糊对于图像来说就是一个低通滤波器。

高斯模糊原理: “模糊”,就是将图像中每个像素值进行重置的过程,这个过程采用将每一个像素都设置成周边像素的平均值。 

# 高斯模糊
#     高斯模糊
#     操作
#     cv2.GaussianBlur(image, (135, 135), 0)  #(5, 5)表示高斯矩阵(高斯内核)的长与宽都是5(必须为奇数),标准差取0
 
import cv2
import numpy as np
 
def clamp(pv):  #保证 RGB三色值的数值不超过255
    if pv>255:
        return 255
    if pv<0:
        return 0
    else:
        return pv
 
def gaussian_noise(image):  #给图片加一些噪声,高斯噪声
    h, w, c = image.shape  #获取三个值,高度、宽度、深度
    for row in range(h):  #在宽度、 高度中遍历进行像素点RGB的赋值
        for col in range(w):
            s=np.random.normal(0, 20, 3)  #获取随机数  3个数的数组
            b = image[row, col, 0]  # blue   原来的蓝色值
            g = image[row, col, 1]  # green
            r = image[row, col, 2]  # red
            image[row, col, 0] = clamp(b + s[0])  #加上处理赋值
            image[row, col, 1] = clamp(g + s[1])
            image[row, col, 2] = clamp(r + s[2])
    cv2.imshow("Gauss_noise", image)
 
print("--------Hello Python--------")
src=cv2.imread("lena.jpg")
cv2.imshow("Source Image",src)
t1=cv2.getTickCount()#获取时间值
gaussian_noise(src)
t2=cv2.getTickCount()#获取时间值
time=(t2-t1)/cv2.getTickFrequency()#计算出时间(s)
print("所用时间:%s"%(time*1000))
 
dst = cv2.GaussianBlur(src, (2555,2555), 15)#进行高斯模糊处理
cv2.imshow("Gauss_blur",dst)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

(1)原图:

OpenCV3.3+Python3.6实现图片高斯模糊

(2)高斯噪声图片

OpenCV3.3+Python3.6实现图片高斯模糊

(3)高斯模糊效果

OpenCV3.3+Python3.6实现图片高斯模糊

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常用正则表达式符号浅析
Aug 13 Python
python中对list去重的多种方法
Sep 18 Python
Python表示矩阵的方法分析
May 26 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
python实现可逆简单的加密算法
Mar 22 Python
使用python画社交网络图实例代码
Jul 10 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Python timer定时器两种常用方法解析
Jan 20 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
Python新手学习raise用法
Jun 03 Python
python 利用zmail库发送邮件
Sep 11 Python
Python基于locals返回作用域字典
Oct 17 Python
Python中for后接else的语法使用
python源码剖析之PyObject详解
Python3 如何开启自带http服务
May 18 #Python
安装pytorch时报sslerror错误的解决方案
Pytorch 如何实现LSTM时间序列预测
pytorch实现ResNet结构的实例代码
pytorch常用数据类型所占字节数对照表一览
May 17 #Python
You might like
PHP 如何向 MySQL 发送数据
2006/10/09 PHP
php 无限分类的树类代码
2009/12/03 PHP
php标签云的实现代码
2012/10/10 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
prototype 的说明 js类
2006/09/07 Javascript
$()JS小技巧
2007/07/21 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
javascript date格式化示例
2013/09/25 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
基于AngularJS的简单使用详解
2017/09/10 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python基础教程之匿名函数lambda
2017/01/17 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
基于python绘制科赫雪花
2018/06/22 Python
python微信撤回监测代码
2019/04/29 Python
django用户登录验证的完整示例代码
2019/07/21 Python
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
2014最新毕业证代领委托书
2014/09/26 职场文书
辛亥革命观后感
2015/06/02 职场文书
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL