#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("city.jpg");
imshow("原图", image);
Mat dst;
//线性滤波
boxFilter(image, dst, -1, Size(5, 5));
imshow("方框滤波", dst);
blur(image, dst, Size(5, 5));
imshow("均值滤波", dst);
GaussianBlur(image, dst, Size(5, 5), 0, 0);
imshow("高斯滤波", dst);
//非线性滤波
medianBlur(image, dst, 5);
imshow("中值滤波", dst);
bilateralFilter(image, dst, 25, 25*2, 25/2);
imshow("双边滤波", dst);
//形态学滤波
Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
dilate(image, dst, element);
imshow("膨胀", dst);
erode(dst, dst, element);
imshow("膨胀腐蚀", dst);
erode(image, dst, element);
imshow("腐蚀", dst);
morphologyEx(image, dst, MORPH_OPEN, element);
imshow("开运算", dst);
morphologyEx(image, dst, MORPH_CLOSE, element);
imshow("闭运算", dst);
morphologyEx(image, dst, MORPH_GRADIENT, element);
imshow("形态学梯度", dst);
morphologyEx(image, dst, MORPH_TOPHAT, element);
imshow("顶帽", dst);
morphologyEx(image, dst, MORPH_BLACKHAT, element);
imshow("黑帽", dst);
morphologyEx(image, dst, MORPH_ERODE, element);
imshow("腐蚀", dst);
morphologyEx(image, dst, MORPH_DILATE, element);
imshow("膨胀", dst);
floodFill(image, Point(150, 200), Scalar(255, 0, 0), nullptr, Scalar(30, 30, 30),
Scalar(30, 30, 30), 8 | FLOODFILL_FIXED_RANGE);
imshow("漫水填充", image);
waitKey(0);
destroyAllWindows();
system("pause");
return 0;
}
线性滤波、非线性滤波、形态学滤波
最新推荐文章于 2021-05-04 10:36:07 发布