日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opencv简单滤波

發(fā)布時間:2025/4/16 编程问答 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv简单滤波 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 歸一化塊濾波器:

    OpenCV函數(shù)?blur?執(zhí)行了歸一化塊平滑操作。

    for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ){ blur( src, dst, Size( i, i ), Point(-1,-1) );if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }

    我們輸入4個實參 (詳細的解釋請參考 Reference):

    • src: 輸入圖像
    • dst: 輸出圖像
    • Size( w,h ): 定義內(nèi)核大小(?w?像素寬度,?h?像素高度)
    • Point(-1, -1): 指定錨點位置(被平滑點), 如果是負值,取核的中心為錨點。
  • 高斯濾波器:

    OpenCV函數(shù)?GaussianBlur?執(zhí)行高斯平滑 :

    for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ){ GaussianBlur( src, dst, Size( i, i ), 0, 0 );if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }
  • 我們輸入4個實參 (詳細的解釋請參考 Reference):

    • src: 輸入圖像
    • dst: 輸出圖像
    • Size(w, h): 定義內(nèi)核的大小(需要考慮的鄰域范圍)。??和??必須是正奇數(shù),否則將使用??和??參數(shù)來計算內(nèi)核大小。
    • : x 方向標(biāo)準(zhǔn)方差, 如果是??則??使用內(nèi)核大小計算得到。
    • : y 方向標(biāo)準(zhǔn)方差, 如果是??則??使用內(nèi)核大小計算得到。.
  • 中值濾波器:

    OpenCV函數(shù)?medianBlur?執(zhí)行中值濾波操作:

    for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ){ medianBlur ( src, dst, i );if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }

    我們用了3個參數(shù):

    • src: 輸入圖像
    • dst: 輸出圖像, 必須與?src?相同類型
    • i: 內(nèi)核大小 (只需一個值,因為我們使用正方形窗口),必須為奇數(shù)。
  • 雙邊濾波器

    OpenCV函數(shù)?bilateralFilter?執(zhí)行雙邊濾波操作:

    for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 ){ bilateralFilter ( src, dst, i, i*2, i/2 );if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }

    我們使用了5個參數(shù):

    • src: 輸入圖像
    • dst: 輸出圖像
    • d: 像素的鄰域直徑
    • : 顏色空間的標(biāo)準(zhǔn)方差
    • : 坐標(biāo)空間的標(biāo)準(zhǔn)方差(像素單位)


  • #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp"using namespace std; using namespace cv;/// 全局變量 int DELAY_CAPTION = 1500; int DELAY_BLUR = 100; int MAX_KERNEL_LENGTH = 31;Mat src; Mat dst; char window_name[] = "Filter Demo 1";/// 函數(shù)申明 int display_caption(char* caption); int display_dst(int delay);/** * main 函數(shù) */ int main(int argc, char** argv) {namedWindow(window_name, CV_WINDOW_AUTOSIZE);/// 載入原圖像src = imread("C:/lena.jpg", 1);if (display_caption("Original Image") != 0) { return 0; }dst = src.clone();if (display_dst(DELAY_CAPTION) != 0) { return 0; }/// 使用 均值平滑if (display_caption("Homogeneous Blur") != 0) { return 0; }for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2){blur(src, dst, Size(i, i), Point(-1, -1));if (display_dst(DELAY_BLUR) != 0) { return 0; }}/// 使用高斯平滑if (display_caption("Gaussian Blur") != 0) { return 0; }for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2){GaussianBlur(src, dst, Size(i, i), 0, 0);if (display_dst(DELAY_BLUR) != 0) { return 0; }}/// 使用中值平滑if (display_caption("Median Blur") != 0) { return 0; }for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2){medianBlur(src, dst, i);if (display_dst(DELAY_BLUR) != 0) { return 0; }}/// 使用雙邊平滑if (display_caption("Bilateral Blur") != 0) { return 0; }for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2){bilateralFilter(src, dst, i, i * 2, i / 2);if (display_dst(DELAY_BLUR) != 0) { return 0; }}/// 等待用戶輸入display_caption("End: Press a key!");waitKey(0);return 0; }int display_caption(char* caption) {dst = Mat::zeros(src.size(), src.type());putText(dst, caption,Point(src.cols / 4, src.rows / 2),CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255));imshow(window_name, dst);int c = waitKey(DELAY_CAPTION);if (c >= 0) { return -1; }return 0; }int display_dst(int delay) {imshow(window_name, dst);int c = waitKey(delay);if (c >= 0) { return -1; }return 0; }




    總結(jié)

    以上是生活随笔為你收集整理的opencv简单滤波的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。