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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
详解Python的Django框架中的模版继承
Jul 16 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
简单实现python画圆功能
Jan 25 Python
Python中的TCP socket写法示例
May 11 Python
pandas 数据实现行间计算的方法
Jun 08 Python
python远程连接MySQL数据库
Apr 19 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
如何使用Pytorch搭建模型
Oct 26 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
实例讲解Python中sys.argv[]的用法
Jun 03 Python
Python如何用re模块实现简易tokenizer
May 02 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下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php木马webshell扫描器代码
2012/01/25 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
28个JS验证函数收集
2010/03/02 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
Python库安装速度过慢解决方案
2020/07/14 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
季度思想汇报
2014/01/01 职场文书
高级编程求职信模板
2014/02/16 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
推荐信模板
2014/05/09 职场文书
股东授权委托书范本
2014/09/13 职场文书
财务总监岗位职责
2015/02/03 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
Java基础-封装和继承
2021/07/02 Java/Android
redis lua限流算法实现示例
2022/07/15 Redis