作业总结:磨皮滤镜(双边滤波bilateralFilter)代码实现[通俗易懂]

作业总结:磨皮滤镜(双边滤波bilateralFilter)代码实现[通俗易懂]双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数.1Python:cv2.bilateralFilter(src,d,sigm…

大家好,又见面了,我是你们的朋友全栈君。

双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数.

 

1 Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst

 

参数解释:

  • src:输入图像

  • d:过滤时周围每个像素领域的直径

  • sigmaColor:在color space中过滤sigma。参数越大,临近像素将会在越远的地方mix。

  • sigmaSpace:在coordinate space中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大。

 

import cv2
import numpy as np

def nothing(x):
    pass

cv2.namedWindow("image")
cv2.createTrackbar("d","image",0,255,nothing)
cv2.createTrackbar("sigmaColor","image",0,255,nothing)
cv2.ctrateTrackbar("sigmaSpace","image",0,255,nothing)
img = cv2.imread(r"E:\src.jpg",0)
while(1):
    d = cv2.getTrackbarPos("d","image")
    sigmaColor = cv2.getTrackbarPos("sigmaColor","image")
    sigmaSpace = cv2.getTrackbarPos("sigmaSpace","image")
    out_img = cv2.bilateralFilter(img,d,sigmaColor,sigmaSpace)
    cv2.imshow("out",out_img)
    k = cv2.waitKey(1) & 0xFF
    if k ==27:
        break
cv2.destroyAllWindows()

 

 

备注:

waitKey()函数的功能是不断刷新图像,频率时间为delay,单位为ms。

返回值为当前键盘按键值。

所以显示图像时,如果需要在imshow(“xxxx”,image)后吐舌头加上while(cvWaitKey(n)==key)为大于等于0的数即可,那么程序将会停在显示函数处,不运行其他代码;直到键盘值为key的响应之后。

delay>0时,延迟”delay”ms,在显示视频时这个函数是有用的,用于设置在显示完一帧图像后程序等待”delay”ms再显示下一帧视频;如果使用waitKey(0)则只会显示第一帧视频。

返回值:如果delay>0,那么超过指定时间则返回-1;如果delay=0,将没有返回值。 
  如果程序想响应某个按键,可利用if(waitKey(1)==Keyvalue); 
如果delay<0,等待时间无限长,返回值为按键值

经常程序里面出现if( waitKey(10) >= 0 ) 是说10ms中按任意键进入此if块。

 

cv2.waitKey(1) 与 0xFF(1111 1111)相与是因为cv2.waitKey(1) 的返回值不止8位,但是只有后8位实际有效,为避免产干扰,通过 ‘与’ 操作将其余位置0。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162994.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 静态代理与动态代理_java静态代理动态代理

    静态代理与动态代理_java静态代理动态代理讲解静态代理与动态代理的实现示例,静态代理与动态代理的区别

    2022年8月31日
    4
  • 基于Python的频谱分析(一)

    基于Python的频谱分析(一)

    2021年11月21日
    44
  • 《JavaScript 模式》读书笔记(4)— 函数5

    这一篇是函数部分的最后一篇。我们来聊聊Curry化。十、Curry这部分我们主要讨论Curry化和部分函数应用的内容。但是在深入讨论之前,我们需要先了解一下函数应用的含义。函数应用在一些纯粹的

    2022年3月25日
    42
  • c盘替换文件需要权限_windows安装命令

    c盘替换文件需要权限_windows安装命令大家都知道08权限的系统权限设置很严格,且在2003系统中常用到的溢出工具都失效。面对限制IP连接的情况我们及时拿到system权限有账号也上不去这种情况下只能弄shift后门或者放大镜了。但08权限在system权限也操作不了系统文件夹。先查通过whoami查看下登录帐号权限。通过下图我们看到是普通权限我用的到时MS12042这个大家都会用单独讲sysret.ex…

    2025年12月10日
    4
  • 机器学习 BP神经网络(Python实现)

    机器学习 BP神经网络(Python实现)一个神经元即一个感知机模型,由多个神经元相互连接形成的网络,即神经网络。这里我们只讨论单隐层前馈神经网络,其连接形式入下:神经网络模型的待估参数即,每个神经元的阈值,以及神经元之间的连接权重。对于该模型有如下定义:训练集:D={(x1,y1),(x2,y2),……,(xm,ym)},x具有d个属性值,y具有k个可能取值则我们的神经网络(单隐层前馈神经网络…

    2025年10月26日
    4
  • android读取sqlite数据库的数据并用listview显示

    android读取sqlite数据库的数据并用listview显示android读取sqlite数据库的数据并用listview显示刚刚接触android,老师给了我了几个班级信息的excel,让我做一个考勤的系统出来,本篇仅记录了真机调试下,读取已有静态数据库信息并显示在listview中。准备工作开发工具为AndroidStudio。sqlite可视化软件SQLiteExpertProfessional5已将excel表转化为的数据库student1………

    2022年7月27日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号