ZBLOG

c++ opencv 对输入的8位灰度图像做滤波,给我实现几种常用滤波方法

在C++中使用OpenCV对输入的8位灰度图像进行滤波,可以实现几种常用的滤波方法,比如均值滤波、高斯滤波和中值滤波。以下是每种方法的实现示例代码:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {
    // 读取灰度图像
    Mat img = imread("input_image.jpg", IMREAD_GRAYSCALE);
    if (img.empty()) {
        cout << "Error loading image!" << endl;
        return -1;
    }

    // 均值滤波
    Mat meanFiltered;
    int kernelSize = 5; // 核大小
    blur(img, meanFiltered, Size(kernelSize, kernelSize));

    // 高斯滤波
    Mat gaussianFiltered;
    double sigmaX = 1.0; // X方向标准差
    GaussianBlur(img, gaussianFiltered, Size(kernelSize, kernelSize), sigmaX);

    // 中值滤波
    Mat medianFiltered;
    medianBlur(img, medianFiltered, kernelSize);

    // 显示结果
    imshow("Original Image", img);
    imshow("Mean Filtered Image", meanFiltered);
    imshow("Gaussian Filtered Image", gaussianFiltered);
    imshow("Median Filtered Image", medianFiltered);

    waitKey(0); // 等待按键关闭窗口

    return 0;
}

说明:

  1. 均值滤波 (blur函数): 使用指定大小的核计算每个像素周围区域的平均值。
  2. 高斯滤波 (GaussianBlur函数): 使用高斯函数加权计算邻域像素,具有更好的平滑效果。
  3. 中值滤波 (medianBlur函数): 用于去除噪声,尤其是椒盐噪声,通过取邻域像素的中间值来替代当前像素。

注意:

  • 确保已安装OpenCV库,并在编译时链接相应的库。
  • "input_image.jpg" 替换为你自己的图像文件路径。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20950

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?