zoukankan      html  css  js  c++  java
  • python-opencv-图像毛玻璃模糊效果

    毛玻璃其实就是磨砂玻璃,图像经过毛玻璃模糊效果后能够模糊的看清背后的风景,让人感觉有种朦胧美,让界面看上去很有层次感。
    我们知道了图像马赛克效果是通过设置一个指定大小的像素块并将其中的所有像素点设置成统一值实现的。与图像的马赛克效果类似,图像的毛玻璃模糊效果也是通过修改像素点的颜色值来实现的,只不过是通过像素点随机替换来修改像素点的颜色值

    如上图所示,左边为原图像的某5个像素点,我们假设随机替换值为5,即随机替换的范围为0-4。那么对于原图像上的某个像素点(x,y)的颜色值,我们将用原图像上的另一个像素点(x+随机值,y+随机值)的颜色值进行替换,即(x,y)=(x+随机值,y+随机值)。经过一系列像素点变换后,就得到了类似右边的图像,从而实现图像的毛玻璃模糊效果。

    首先按照惯例使用imread()函数读取原图像的图像数据,并通过shape属性获取出图像的宽高信息。接着新建一个图像空模板,大小和形状与原图像保持一致。同时设置随机替换值,这里我们设置为5。然后开始遍历像素点,利用我们设置的随机替换值使用random模块的random.randint函数产生一个随机整数值,对像素点进行随机替换。 

    import cv2
    import numpy as np
    import random
    
    img = cv2.imread("2013.jpg",1)  #读取一张图片,彩色
    cha=img.shape
    height,width,deep=cha
    cv2.imshow('img',img)
    dst=np.zeros(cha,np.uint8)
    randon_v=5  #用来替换的范围--这个值越大毛玻璃效果越明显
    #防止越界
    for m in range(height-randon_v):  #毛玻璃效果
        for n in range(width-randon_v):
            index=random.randint(1,randon_v)
            (b,g,r)=img[m+index,n+index]
            dst[m,n]=(b,g,r)
    cv2.imshow('dst',dst)
    cv2.waitKey()

    右边的图就实现了图像的毛玻璃模糊效果,根据我们设置的随机替换值大小,毛玻璃的模糊程度会随之不同。随机替换值越大,毛玻璃模糊程度也就越大。由于我们未对边界值进行处理,因此经过毛玻璃模糊效果处理后的图像右边和下边都有黑色的边界。如果要处理,最简单的可以遍历黑色边界像素,用附近像素的颜色值进行填充即可。 

    效果图:

    下面我把随机值改为10:

    import cv2
    import numpy as np
    import random
    
    img = cv2.imread("2013.jpg",1)  #读取一张图片,彩色
    cha=img.shape
    height,width,deep=cha
    cv2.imshow('img',img)
    dst=np.zeros(cha,np.uint8)
    randon_v=10  #用来替换的范围--这个值越大毛玻璃效果越明显
    #防止越界
    for m in range(height-randon_v):
        for n in range(width-randon_v):
            index=random.randint(1,randon_v)
            (b,g,r)=img[m+index,n+index]
            dst[m,n]=(b,g,r)
    cv2.imshow('dst',dst)
    cv2.waitKey()

    效果图:

      

  • 相关阅读:
    PowerShell_零基础自学课程_7_Powershell中重定向机制、目录和文件管理
    volcanol_C语言学习趣事汇总贴
    linux_shell_2_shell 中的变量特性
    PowerShell_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
    volcanol_Linux_问题汇总系列_2_如何在linux和windows主机之间共享文件
    C语言学习趣事_你不知道的C语言应用
    volcanol_Windows_Powershell_汇总贴
    PowerShell_零基础自学课程_4_PowerShell的别名功能、错误管理功能和系统资源区域导航
    Sqlite 管理工具 SQLiteDeveloper及破解
    android建立Menu详解
  • 原文地址:https://www.cnblogs.com/liming19680104/p/12222670.html
Copyright © 2011-2022 走看看