OpenCv图像处理之双边滤波
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void resize_img(Mat &mat, int width, int height, int interpolation = INTER_AREA);
Mat zero_mat(Mat mat, int width, int height);
int get_width(Mat mat, double scale = 0.5);
int get_height(Mat mat, double scale = 0.5);
int main() {
Mat original_img, clone_img, dst_img, dst_another;
original_img = imread("D:/cat.jpg", IMREAD_COLOR);
if (original_img.empty()) {
cout << "open error!" << endl;
return -1;
}
clone_img = original_img.clone();
double scale = 0.5;
int width = get_width(clone_img);
int height = get_height(clone_img);
resize_img(clone_img, width, height);
dst_img = zero_mat(dst_img, width, height);
cv::medianBlur(clone_img, dst_img, 9);
imshow("dst", dst_img);
dst_another = zero_mat(dst_another, width, height);
cv::bilateralFilter(clone_img, dst_another, 25, 25 * 2, 25 * 2);
imshow("dst_another", dst_another);
imshow("original_img", clone_img);
waitKey(0);
return 0;
}
效果显示