OpenCV之邊緣檢測(二)

OpenCV四種邊緣檢測算法步驟及代碼

Canny

流程:

Created with Raphaël 2.1.0srccvtColor to grayblurcannydst

代碼:

Mat srcImg, dstImg;
srcImg = imread("1.jpg");
cvtColor(srcImg, srcImg, COLOR_BGR2GRAY);
blur(srcImg, srcImg, Size(3, 3));
Canny(srcImg, dstImg, 30, 90, 3);
imshow("dst", dstImg); 

這裏寫圖片描述

Sobel

流程:

Created with Raphaël 2.1.0srcgrade_x, grade_yabs_grade_x, abs_grade_yaddWeightdst

代碼:

Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y, dst;

Mat src = imread("1.jpg");
imshow("src", src);

Sobel(src, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
imshow("x_", grad_x);
imshow("x", abs_grad_x);

Sobel(src, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(grad_y, abs_grad_y);
imshow("y_", grad_y);
imshow("y", abs_grad_y);

addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);
imshow("dst", dst);

這裏寫圖片描述

Laplace

流程:

Created with Raphaël 2.1.0srccvtColor to grayGaussianBlurLaplaceabs_dst

代碼:

Mat src = imread("1.jpg"), gray, dst, abs_dst;
imshow("src", src);

cvtColor(src, gray, COLOR_BGR2GRAY);

GaussianBlur(gray, gray, Size(3, 3), 0, 0);

Laplacian(gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT);

convertScaleAbs(dst, abs_dst);

imshow("dst", abs_dst);

這裏寫圖片描述

Scharr

流程:

Created with Raphaël 2.1.0srcgrade_x, grade_yabs_grade_x, abs_grade_yaddWeighteddst

代碼:

Mat grad_x, grad_y,
    abs_grad_x, abs_grad_y;

Mat srcImg = imread("../../data/sea1.jpg"), dstImg;

imshow("src", srcImg);

Scharr(srcImg, grad_x, CV_16S, 1, 0, 1, 0, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);

Scharr(srcImg, grad_y, CV_16S, 0, 1, 1, 0, BORDER_DEFAULT);
convertScaleAbs(grad_y, abs_grad_y);

addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dstImg);
imshow("dst",dstImg);

waitKey(0);

這裏寫圖片描述

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