OpenCV實現雙邊濾波算法
更新時間:2021年10月11日 09:55:49 作者:點云俠
這篇文章主要為大家詳細介紹了OpenCV實現雙邊濾波算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了OpenCV實現雙邊濾波算法的具體代碼,供大家參考,具體內容如下
一、雙邊濾波
雙邊濾波是一種綜合考慮濾波器內圖像空域信息和濾波器內圖像像素灰度值相似性的濾波算法,可以實現在保留區(qū)域信息的基礎上實現對噪聲的去除、對局部邊緣的平滑。雙邊濾波對高頻率的波動信號起到平滑的作用,同時保留大幅值變化的信號波動,進而實現對保留圖像中邊緣信息的作用。雙邊濾波具有美顏效果。
二、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++編譯protobuf時提示LNK2001 無法解析的外部符號的問題
這篇文章主要介紹了關于c++編譯protobuf時提示LNK2001 無法解析的外部符號的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12C++文件IO流及stringstream流讀寫文件和字符串操作詳解
本文詳細介紹C++中的文件IO流和stringstream流的使用方法,包括文件的打開、讀寫操作,以及字符串的輸入輸出、轉換等操作。同時提供實用的示例代碼和技巧,幫助讀者更好地掌握這兩種流的使用2023-04-04