在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;
}
這些方法只是圖像濾波和增強的一部分,還有其他更多的技術可以用于圖像處理,例如邊緣檢測、特征提取等。在實際應用中,可以根據需要選擇合適的方法來實現圖像的濾波和增強。