OpenCV之边缘检测(二)

OpenCV四种边缘检测算法步骤及代码

Canny

流程:

Created with Raphaël 2.1.0 src cvtColor to gray blur canny dst

代码:

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.0 src grade_x, grade_y abs_grade_x, abs_grade_y addWeight dst

代码:

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.0 src cvtColor to gray GaussianBlur Laplace abs_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.0 src grade_x, grade_y abs_grade_x, abs_grade_y addWeighted dst

代码:

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);

这里写图片描述

猜你喜欢

转载自blog.csdn.net/SarKerson/article/details/77380387