在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;
}
这些方法只是图像滤波和增强的一部分,还有其他更多的技术可以用于图像处理,例如边缘检测、特征提取等。在实际应用中,可以根据需要选择合适的方法来实现图像的滤波和增强。