- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
使用中值濾波器模糊圖像。
該函數使用帶有 ksize×ksize 開口的中值濾波器來平滑圖像。多通道圖像的每個通道都是獨立處理的。輸出圖像必須與輸入圖像具有相同的類型、大小和通道數。
cv::gapi::medianBlur 是 OpenCV G-API 模塊中提供的一個函數,用于對圖像應用中值模糊(Median Blur)。中值模糊是一種非線性濾波技術,常用于減少圖像中的噪聲。與均值濾波器不同,中值濾波器在處理每個像素時會考慮其鄰域內的所有像素值,并將中心像素的值替換為這些值的中位數,這樣可以在一定程度上去除椒鹽噪聲而不平滑邊緣。
注意:
如果硬件支持,會進行向最近偶數的舍入,如果不支持,則向最近的整數舍入。中值濾波器內部使用 cv::BORDER_REPLICATE 來處理邊界像素,請參閱 cv::BorderTypes。
函數的文字ID是 “org.opencv.imgproc.filters.medianBlur”。
函數原型
GMat cv::gapi::medianBlur
(const GMat & src,int ksize
)
參數
- 參數src: 輸入矩陣(圖像)
- 參數 ksize: 開口的線性尺寸;它必須是奇數并且大于1,例如:3, 5, 7…
代碼示例
#include <opencv2/opencv.hpp>
#include <opencv2/gapi/imgproc.hpp> // 確保包含正確的頭文件
#include <opencv2/gapi/core.hpp>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/cpu/gcpukernel.hpp> // 引入CPU kernelsint main()
{// 讀取輸入圖像cv::Mat img = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png");if (img.empty()) {std::cerr << "Could not open or find the image!\n";return -1;}// 創建G-API網絡cv::GMat in;auto out = cv::gapi::medianBlur(in, 5); // 應用5x5的中值模糊cv::GComputation comp(cv::GIn(in), cv::GOut(out));// 運行計算圖,使用CPU kernels作為后端cv::Mat result;comp.apply(img, result, cv::compile_args( cv::gapi::kernels() ) );// 顯示結果cv::imshow("Original Image", img);cv::imshow("Median Blur Result", result);cv::waitKey(0);return 0;
}