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获取apk文件URL地址实例
Nov 01 Python
python 性能提升的几种方法
Jul 15 Python
python字典键值对的添加和遍历方法
Sep 11 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
python pandas 时间日期的处理实现
Jul 30 Python
使用pip安装python库的多种方式
Jul 31 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
Python tkinter实现日期选择器
Feb 22 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&amp;java(一)
2006/10/09 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
php加密解密字符串示例
2016/10/13 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
详解Python中的多线程编程
2015/04/09 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
详解Python中的正则表达式
2018/07/08 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
使用python实现画AR模型时序图
2019/11/20 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
草莓网官网:StrawberryNET
2019/08/21 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
租赁意向书范本
2014/04/01 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
工作保证书怎么写
2015/02/28 职场文书
公司禁烟通知
2015/04/23 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
JS 基本概念详细介绍
2021/10/16 Javascript