13. 用Roberts、Sobel、Prewitt和Laplace算子对一幅灰度图像进行边缘检测。观察异同。

时间:2022-01-15 21:16:22
#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y, dst, src_gray, abs_dst;
Mat src = imread("6013202130.jpg"); //工程目录下应该有一张名为1.jpg的素材图
imshow("【原始图】sobel边缘检测", src);
Sobel(src, grad_x, CV_16S, , , , , , BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
Sobel(src, grad_y, CV_16S, , , , , , BORDER_DEFAULT);
convertScaleAbs(grad_y, abs_grad_y);
addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, , dst);
imshow("【效果图】整体方向Sobel", dst);
GaussianBlur(src, src, Size(, ), , , BORDER_DEFAULT);
cvtColor(src, src_gray, CV_RGB2GRAY);
Laplacian(src_gray, dst, CV_16S, , , , BORDER_DEFAULT);
convertScaleAbs(dst, abs_dst);
imshow("【效果图】图像Laplace变换", abs_dst);
waitKey();
return ;
}

13. 用Roberts、Sobel、Prewitt和Laplace算子对一幅灰度图像进行边缘检测。观察异同。