当前位置:实例文章 » 其他实例» [文章]C++OpenCV(5):图像模糊操作(四种滤波方法)

C++OpenCV(5):图像模糊操作(四种滤波方法)

发布人:shili8 发布时间:2025-02-13 21:30 阅读次数:0

**图像模糊操作(四种滤波方法)**

在 OpenCV 中,图像模糊是指将原始图像转换为模糊的图像,以减少噪声或提高图像质量。有多种滤波方法可以实现图像模糊,其中包括平均滤波、Gaussian 滤波、Median 滤波和Bilateral 滤波。

###1. 平均滤波平均滤波是最简单的滤波方法之一,它通过取一块区域内所有像素的平均值来实现模糊效果。OpenCV 中可以使用 `cv::blur()` 函数来实现平均滤波。

cpp#include 

int main() {
 //读入原始图像 cv::Mat src = cv::imread("image.jpg");

 // 创建一个窗口,大小为5x5 cv::Size windowSize(5,5);

 // 使用平均滤波模糊图像 cv::Mat dst;
 cv::blur(src, dst, windowSize);

 // 显示原始图像和模糊后的图像 cv::imshow("Original Image", src);
 cv::imshow("Fuzzed Image", dst);

 // 等待用户按键 cv::waitKey(0);
 cv::destroyAllWindows();

 return0;
}


###2. 高斯滤波高斯滤波是平均滤波的变体,它使用高斯分布来权衡每个像素点的重要性。OpenCV 中可以使用 `cv::GaussianBlur()` 函数来实现高斯滤波。

cpp#include 

int main() {
 //读入原始图像 cv::Mat src = cv::imread("image.jpg");

 // 创建一个窗口,大小为5x5 cv::Size windowSize(5,5);

 // 使用高斯滤波模糊图像 cv::Mat dst;
 cv::GaussianBlur(src, dst, windowSize,0);

 // 显示原始图像和模糊后的图像 cv::imshow("Original Image", src);
 cv::imshow("Fuzzed Image", dst);

 // 等待用户按键 cv::waitKey(0);
 cv::destroyAllWindows();

 return0;
}


###3. 中位数滤波中位数滤波是通过取一块区域内所有像素的中位数来实现模糊效果。OpenCV 中可以使用 `cv::medianBlur()` 函数来实现中位数滤波。

cpp#include 

int main() {
 //读入原始图像 cv::Mat src = cv::imread("image.jpg");

 // 创建一个窗口,大小为5x5 cv::Size windowSize(5,5);

 // 使用中位数滤波模糊图像 cv::Mat dst;
 cv::medianBlur(src, dst,5);

 // 显示原始图像和模糊后的图像 cv::imshow("Original Image", src);
 cv::imshow("Fuzzed Image", dst);

 // 等待用户按键 cv::waitKey(0);
 cv::destroyAllWindows();

 return0;
}


###4. 双边滤波双边滤波是通过结合平均滤波和高斯滤波来实现模糊效果。OpenCV 中可以使用 `cv::bilateralFilter()` 函数来实现双边滤波。

cpp#include 

int main() {
 //读入原始图像 cv::Mat src = cv::imread("image.jpg");

 // 创建一个窗口,大小为5x5 cv::Size windowSize(5,5);

 // 使用双边滤波模糊图像 cv::Mat dst;
 cv::bilateralFilter(src, dst,5,50,50);

 // 显示原始图像和模糊后的图像 cv::imshow("Original Image", src);
 cv::imshow("Fuzzed Image", dst);

 // 等待用户按键 cv::waitKey(0);
 cv::destroyAllWindows();

 return0;
}


以上是四种滤波方法的示例代码。这些代码可以帮助你理解如何使用 OpenCV 中的滤波函数来实现图像模糊效果。

其他信息

其他资源

Top