OpenCV之图像处理(十九) Laplance算子

在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。
二阶导数我不会? 拉普拉斯算子已实现,嘿嘿

代码

    #include "../common/common.hpp"

    void main(int argc, char** argv)
    {
        Mat src, dst1, gray, laplacian, dst2;
        src = imread(getCVImagesPath("images/lena.png"), IMREAD_COLOR);
        imshow("src", src);

        GaussianBlur(src, dst1, Size(3, 3), 0, 0);//先模糊,为了去噪声
        cvtColor(dst1, gray, CV_BGR2GRAY);
        Laplacian(gray, laplacian, CV_16S, 3);//参数意思与上述的 Sobel Scharr 函数一致
        convertScaleAbs(laplacian, laplacian);
        imshow("laplacian", laplacian);

        threshold(laplacian, dst2, 0, 255, THRESH_OTSU | THRESH_BINARY);//二值化,边缘显示的更清晰
        imshow("dst2", dst2);

        waitKey(0);
    }

效果图

这里写图片描述

猜你喜欢

转载自blog.csdn.net/huanghuangjin/article/details/81142782
今日推荐