Opencv C++算子(四)轮廓查找Smooth/Blur/GaussianBlur

145次阅读
没有评论

共计 1362 个字符,预计需要花费 4 分钟才能阅读完成。

1、模糊原理
Smooth/Blur 是图像处理中最简单和常用的操作之一
使用该操作的原因之一就为了给图像预处理时候减低噪声
使用Smooth/Blur操作其背后是数学的卷积计算

通常这些卷积算子计算都是线性操作,所以又叫线性滤波

归一化盒子滤波(均值滤波):

高斯滤波

2、相关API
均值模糊

blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));

高斯模糊

GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay);

其中Size(x, y), x, y 必须是正数而且是奇数

3、代码实现
均值模糊代码如下:

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

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
  Mat src, dst;
  src = imread("C:/Users/86180/Desktop/文档/学习/opencv/图片处理/zqy4_1.jpg");
  if (!src.data) {
    cout << "could not load image..4." << endl;
    return -1;
  }
  
  char input_win[] = "input image";
  char output_win[] = "blue image";
  namedWindow(input_win, WINDOW_AUTOSIZE);
  namedWindow(output_win, WINDOW_AUTOSIZE);
    imshow(input_win, src);
  
  blur(src, dst, Size(5, 3), Point(-1, -1));
  imshow(output_win, dst);

  waitKey(0);
  return 0;
}


其运行结果为:
Opencv C++算子(四)轮廓查找Smooth/Blur/GaussianBlur

  • 高斯模糊代码如下:
#include <opencv2/opencv.hpp> 
#include <iostream> 
using namespace cv;

int main(int argc, char** argv) {
  Mat src, dst;
  src = imread("C:/Users/86180/Desktop/文档/学习/opencv/图片处理/zqy4_1.jpg");
  if (!src.data) {
    printf("could not load image...\n");
    return -1;
  }
  char input_title[] = "input image";
  char output_title[] = "blur image";
  namedWindow(input_title, WINDOW_AUTOSIZE);
  namedWindow(output_title, WINDOW_AUTOSIZE);
  imshow(input_title, src);

  //blur(src, dst, Size(11, 11), Point(-1, -1));
  //imshow(output_title, dst);

  Mat gblur;
  GaussianBlur(src, gblur, Size(11, 11), 11, 11);
  imshow("gaussian blur", gblur);

  waitKey(0);
  return 0;
}

其运行结果为:
Opencv C++算子(四)轮廓查找Smooth/Blur/GaussianBlur

正文完
 
admin
版权声明:本站原创文章,由 admin 2022-08-13发表,共计1362字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码