在C++中,图像滤波和增强可以通过多种方法实现,其中一些常见的方法包括:
filter2D
的函数,可以用于实现卷积滤波器。#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat src = imread("input.jpg"); Mat dst; // 创建一个滤波器内核 Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); // 应用卷积滤波器 filter2D(src, dst, src.depth(), kernel); imwrite("output.jpg", dst); return 0; }
GaussianBlur
的函数,可以用于实现高斯滤波器。#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat src = imread("input.jpg"); Mat dst; // 应用高斯滤波器 GaussianBlur(src, dst, Size(5, 5), 1.5); imwrite("output.jpg", dst); return 0; }
medianBlur
的函数,可以用于实现中值滤波器。#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat src = imread("input.jpg"); Mat dst; // 应用中值滤波器 medianBlur(src, dst, 5); imwrite("output.jpg", dst); return 0; }
bilateralFilter
的函数,可以用于实现双边滤波器。#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat src = imread("input.jpg"); Mat dst; // 应用双边滤波器 bilateralFilter(src, dst, 9, 75, 75); imwrite("output.jpg", dst); return 0; }
equalizeHist
的函数,可以用于实现直方图均衡化。#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat src = imread("input.jpg", IMREAD_GRAYSCALE); Mat dst; // 应用直方图均衡化 equalizeHist(src, dst); imwrite("output.jpg", dst); return 0; }
这些方法只是图像滤波和增强的一部分,还有其他更多的技术可以用于图像处理,例如边缘检测、特征提取等。在实际应用中,可以根据需要选择合适的方法来实现图像的滤波和增强。