opencv-3.4.10 C++算法测试 Laplacian 中值滤波 morphologyEx

原图

opencv-3.4.10 C++算法测试 Laplacian 中值滤波 morphologyEx_第1张图片

Laplacian

该函数通过将使用 Sobel 算子计算的第二个 x 和 y 导数相加来计算源图像的拉普拉斯算子。
滤波器样式
[0 1 0;
1 -4 1;
0 1 0;]

void cv::Laplacian(InputArray src,OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT )	

ddepth 输出图像深度
ksize 核大小
scale 尺度放缩因子

测试(代码在后面)

opencv-3.4.10 C++算法测试 Laplacian 中值滤波 morphologyEx_第2张图片

中值滤波

该函数使用 ksize × ksize中值滤波器平滑图像。多通道图像的每个通道都是独立处理的。

void cv::medianBlur(InputArray src,OutputArray dst, int ksize )	

ksize 核大小

测试

opencv-3.4.10 C++算法测试 Laplacian 中值滤波 morphologyEx_第3张图片

morphologyEx

执行高级形态变换。可以选择不同的形态学操作,并可以多次执行。

void cv::morphologyEx(InputArray src,OutputArray dst, int op, InputArray kernel, Point anchor = Point(-1,-1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar & borderValue = morphologyDefaultBorderValue())	

op 形态学操作
opencv-3.4.10 C++算法测试 Laplacian 中值滤波 morphologyEx_第4张图片
kernel 结构元素 使用getStructuringElement

Mat cv::getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1) )	

测试(闭运算)

opencv-3.4.10 C++算法测试 Laplacian 中值滤波 morphologyEx_第5张图片

代码

#include 
#include 
#include 

#include 
#include 
#include 

class Test_opencv {
public:
    void save_img(std::string pic_name, cv::Mat pic, std::string path = "C:\\Users\\Administrator\\Desktop\\pic\\") {
        std::string save_path = path + pic_name + ".jpg";
        cv::imwrite(save_path, pic);
    }

    void image_show(cv::Mat pic) {
        cv::imshow("result", pic);
        cv::waitKey(0);
    }
};


int main() {
    Test_opencv test_opencv;
    cv::Mat pic;
    cv::Mat image;
    image = cv::imread("C:\\Users\\Administrator\\Desktop\\grey.jpg", CV_LOAD_IMAGE_GRAYSCALE);// , CV_LOAD_IMAGE_COLOR);
    //cv::Laplacian(image, pic, image.depth(), 3);
    //cv::medianBlur(image, pic, 7);
    cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
    cv::morphologyEx(image, pic, cv::MORPH_CLOSE, kernel, cv::Point(-1, -1), 3);
    //test_opencv.image_show(pic);
    test_opencv.save_img("morphologyEx", pic);
    return 0;
}

你可能感兴趣的:(opencv笔记,c++,计算机视觉,opencv)