OpenCV实现双边滤波算法

 更新时间:2021年10月11日 09:55:49   作者:点云侠  
这篇文章主要为大家详细介绍了OpenCV实现双边滤波算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了OpenCV实现双边滤波算法的具体代码,供大家参考,具体内容如下

一、双边滤波

双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法,可以实现在保留区域信息的基础上实现对噪声的去除、对局部边缘的平滑。双边滤波对高频率的波动信号起到平滑的作用,同时保留大幅值变化的信号波动,进而实现对保留图像中边缘信息的作用。双边滤波具有美颜效果。

二、C++代码

#include <opencv2\opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
 //读取两张含有人脸的图像
 Mat img1 = imread("face1.png", IMREAD_ANYCOLOR);
 
 if (img1.empty())
 {
  cout << "请确认图像文件名称是否正确" << endl;
  return -1;
 }
 Mat result1, result2, result3, result4;
 //验证不同滤波器直径的滤波效果
 bilateralFilter(img1, result1, 9, 50, 25 / 2);
 bilateralFilter(img1, result2, 25, 50, 25 / 2);
 //验证不同标准差值的滤波效果
 bilateralFilter(img1, result3, 9, 9, 9);
 bilateralFilter(img1, result4, 9, 200, 200);
 //显示原图
 imshow("img1", img1);
 //不同直径滤波结果
 imshow("result1", result1);
 imshow("result2", result2);
 //不同标准差值滤波结果
 imshow("result3 ", result3);
 imshow("result4", result4);
 waitKey(0);
 return 0;
}

三、python代码

import cv2

img = cv2.imread('666.jpg')
# -------------------双边滤波------------------
img_bilater = cv2.bilateralFilter(img, 9, 75, 75)
# ------------------可视化结果-----------------
cv2.imshow('origion_pic', img)
cv2.imshow('filtered_pic', img_bilater)
cv2.waitKey(0)

四、结果展示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++11中的default函数使用

    C++11中的default函数使用

    这篇文章主要介绍了C++11中的default函数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • C++中的RTTI机制详解

    C++中的RTTI机制详解

    这篇文章主要介绍了C++中的RTTI机制详解,本文详细的总结了RTTI的相关知识,需要的朋友可以参考下
    2014-10-10
  • c++ 解析yaml文件的步骤

    c++ 解析yaml文件的步骤

    这篇文章主要介绍了c++ 解析yaml文件的步骤,帮助大家更好的理解和使用c++,感兴趣的朋友可以了解下
    2020-12-12
  • C++存储方案和动态分配

    C++存储方案和动态分配

    这篇文章主要介绍了C++存储方案和动态分配,
    2021-12-12
  • c++截取汉字和英文混合字符串代码实例

    c++截取汉字和英文混合字符串代码实例

    这篇文章主要介绍了c++截取汉字英文混合字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 有关C++头文件的包含顺序研究

    有关C++头文件的包含顺序研究

    下面小编就为大家带来一篇有关C++头文件的包含顺序研究。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • c语言中getch,getche,getchar的区别

    c语言中getch,getche,getchar的区别

    getche() 和getch()很相似,它也需要引入头文件conio.h,那它们之间的区别又在哪里呢?不同之处就在于getch()无返回显示,getche()有返回显示
    2013-09-09
  • 浅析C++中类模板的用法

    浅析C++中类模板的用法

    C++类模板是一种用于创建通用类的工具,它允许我们定义一个通用类,支持多种类型。本文就来简单讲讲它的具体使用吧,感兴趣的可以了解一下
    2023-04-04
  • C++lambda表达式使用介绍

    C++lambda表达式使用介绍

    Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名。本文就来为大家详细讲讲C++中Lambda表达式的使用,需要的可以参考一下
    2022-08-08
  • c++中的const_cast用法大全

    c++中的const_cast用法大全

    const_cast转换符是用来移除变量的const或volatile限定符。对于后者,我不是太清楚,因为它涉及到了多线程的设计,今天重点给大家介绍c++中的const_cast用法大全,需要的朋友参考下吧
    2021-07-07

最新评论