opencv學習筆記-7,laplance邊緣檢測

一、laplance算子

在二階導數的時候,最大變化處的值爲零即邊緣是零值。通過二階導數計算,依據此理論我們可以計算圖像二階導數,提取邊緣。

這裏寫圖片描述 
Laplacian函數定義如下:

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

1、高斯模糊——去噪聲GaussianBlur()

2、轉換爲灰度圖像cvtColor()

3、拉普拉斯——二階導數計算Laplacian()

4、取絕對值convertScaleAbs()

5、顯示結果

#include<opencv2/opencv.hpp>
#include<highgui.h>
#include<iostream>

using  namespace  cv;
using namespace std;

Mat src,dst,gray,x_gray,y_gray,edge_image;
int main(int argc,char**argv)
{
src=imread("1.jpg");
namedWindow("my picture",CV_WINDOW_AUTOSIZE);
imshow("my picture",src);
waitKey(100);

GaussianBlur(src,dst,Size(3,3),0,0,BORDER_DEFAULT);   //高斯降噪,平滑
cvtColor(dst,gray,COLOR_BGR2GRAY);   //轉爲灰度圖
namedWindow("gray image",CV_WINDOW_AUTOSIZE);
imshow("gray image",gray);
waitKey(100);

Laplacian(gray,edge_image,CV_32F,3,1,0);
convertScaleAbs(edge_image,edge_image);
//threshold(edge_image,edge_image,0,255,THRESH_OTSU);
namedWindow("lap_image",CV_WINDOW_AUTOSIZE);
imshow("lap_image",edge_image);

waitKey(0);
return(0);
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章