作业总结:磨皮滤镜(双边滤波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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python递归算法解决斐波那契数列

    Python递归算法解决斐波那契数列**Python递归算法解决斐波那契数列**斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…这个数列从第3项开始,每一项都等于前两项之和。递归算法定义:就是一个函数直接或间接调用自身的一种方法,他…

    2022年6月22日
    31
  • rpm包的卸载与安装[通俗易懂]

    rpm包的卸载与安装[通俗易懂]1.rpm包的管理介绍:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有RPM扩展名的文件,RPM是RedHatPackageManager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的Linux的分发版本都有采用(suse,redhat,centos等等),…

    2022年4月19日
    73
  • Offsetof用法「建议收藏」

    Offsetof用法「建议收藏」#include<stddef.h>#include<stdio.h>structaddress{charname[50];charstreet[50];intphone;};intmain(){printf(“address结构中的name偏移=%d字节。\n”,offsetof(structaddress,name));printf(“address结构中的street偏移=%d字节。\n”,offsetof(s

    2022年8月22日
    4
  • 伴随矩阵求逆矩阵(已知A的伴随矩阵求A的逆矩阵)

    在之前的文章《线性代数之矩阵》中已经介绍了一些关于矩阵的基本概念,本篇文章主要就求解逆矩阵进行进一步总结。余子式(Minor)我们先看例子来直观的理解什么是余子式(Minor,后边将都用英文Minor,中文的翻译较乱)。minorexample这个例子(我们假设矩阵为A)中我们看到A[1,1]的minor就是将A[1,1]所在的行和列删除后剩下的矩阵的行列式,假设我们把A[…

    2022年4月13日
    148
  • pycharm汉化包下载[通俗易懂]

    pycharm汉化包下载[通俗易懂]把解压后的文件放到pycharm安装目录lib文件夹下即可链接:https://pan.baidu.com/s/126-yg7ojwwryywBzUuVEhQ提取码:v5j0

    2022年5月9日
    34
  • 【JAVA 课程设计 之 万年历】「建议收藏」

    距离2017年还有30多个小时~转眼间2016只剩一个尾巴了,大学生活也过了快一半了,自己却依旧那么笨手笨脚,不会的知识永远那么多,该看的书永远没机会去看,2017愿一切如昨天抽的签:远方不一定有诗,但有更好的自己~明天你好,请多关照~2017希望我的家人们,小伙伴们,以及所有帮助过我的朋友们都能健健康康,万事如意~Java课设远没有自己想的难,万年历,不用做显示面~也算2016JAVA的最后一

    2022年4月10日
    49

发表回复

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

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