OpenCV實(shí)現(xiàn)雙邊濾波算法
本文實(shí)例為大家分享了OpenCV實(shí)現(xiàn)雙邊濾波算法的具體代碼,供大家參考,具體內(nèi)容如下
一、雙邊濾波
雙邊濾波是一種綜合考慮濾波器內(nèi)圖像空域信息和濾波器內(nèi)圖像像素灰度值相似性的濾波算法,可以實(shí)現(xiàn)在保留區(qū)域信息的基礎(chǔ)上實(shí)現(xiàn)對(duì)噪聲的去除、對(duì)局部邊緣的平滑。雙邊濾波對(duì)高頻率的波動(dòng)信號(hào)起到平滑的作用,同時(shí)保留大幅值變化的信號(hào)波動(dòng),進(jìn)而實(shí)現(xiàn)對(duì)保留圖像中邊緣信息的作用。雙邊濾波具有美顏效果。
二、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 << "請(qǐng)確認(rèn)圖像文件名稱(chēng)是否正確" << endl;
return -1;
}
Mat result1, result2, result3, result4;
//驗(yàn)證不同濾波器直徑的濾波效果
bilateralFilter(img1, result1, 9, 50, 25 / 2);
bilateralFilter(img1, result2, 25, 50, 25 / 2);
//驗(yàn)證不同標(biāo)準(zhǔn)差值的濾波效果
bilateralFilter(img1, result3, 9, 9, 9);
bilateralFilter(img1, result4, 9, 200, 200);
//顯示原圖
imshow("img1", img1);
//不同直徑濾波結(jié)果
imshow("result1", result1);
imshow("result2", result2);
//不同標(biāo)準(zhǔn)差值濾波結(jié)果
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)
# ------------------可視化結(jié)果-----------------
cv2.imshow('origion_pic', img)
cv2.imshow('filtered_pic', img_bilater)
cv2.waitKey(0)
四、結(jié)果展示

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++數(shù)據(jù)結(jié)構(gòu)之哈希算法詳解
這篇文章主要為大家詳細(xì)介紹了C++數(shù)據(jù)結(jié)構(gòu)中哈希算法的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,希望對(duì)大家有所幫助2022-12-12
VisualStudio2019配置OpenCV的詳細(xì)過(guò)程
這篇文章主要介紹了VisualStudio2019配置OpenCV,配置系統(tǒng)環(huán)境找到高級(jí)系統(tǒng)設(shè)置等一系列操作,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01
手把手教你實(shí)現(xiàn)一個(gè)C++單鏈表
鏈表是一種數(shù)據(jù)結(jié)構(gòu),用于數(shù)據(jù)的存儲(chǔ)。這篇文章主要為大家介紹了如何實(shí)現(xiàn)一個(gè)C++單鏈表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-11-11

