opencv学习笔记4 边缘检测

匿名 (未验证) 提交于 2019-12-03 00:03:02

一。边缘检测的一般步骤

1.滤波 2.增强 3.检测

 

二。canny

void Canny(InputArray image,OutputArray edges, double threshold1, double threshold2, int apertureSize=3,bool L2gradient=false )

 1     Mat src = imread("E:/test.jpg");  2     Mat blur,gray,edge;  3     Mat dst(src.rows, src.cols, src.type());  4     cvtColor(src, gray, CV_BGR2GRAY); //转换为灰度图  5     GaussianBlur(gray, blur, Size(3, 3), 0, 0); //降噪  6     Canny(blur, edge, 200, 100); //边缘检测  7     dst = Scalar::all(0);  8     src.copyTo(dst, edge); //edge作掩码将src拷贝到dst  9     imshow("src", src); 10     imshow("canny detect", dst); 11     waitKey(); 12     return 0;

 

 

 

三。sobel

void Sobel (
InputArray src,//输入图
OutputArray dst,//输出图
int ddepth,//输出图像的深度
int dx,
int dy,
int ksize=3,
double scale=1,
double delta=0,
int borderType=BORDER_DEFAULT );

1     Mat grad_x, grad_y; 2     Mat src = imread("E:/test.jpg",0); 3     Sobel(src, grad_x, src.depth(), 1, 0,3); //x方向梯度 4     Sobel(src, grad_y, src.depth(), 0, 1, 3);//y方向梯度 5     imshow("grad_x", grad_x); 6     imshow("grad_y", grad_y);

 

四。Laplacian

void Laplacian(InputArray src,OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, intborderType=BORDER_DEFAULT );

1     Mat src = imread("E:/test.jpg"); 2     Mat dst; 3     Laplacian(src, dst, src.depth(),3,1,0 ); 4     imshow("src", src); 5     imshow("dst", dst); 6     waitKey();

 

 

五。scharr滤波器

void Scharr(
InputArray src, //Դͼ
OutputArray dst, //目标图
int ddepth,//图像深度
int dx,// x方向上的差分阶数
int dy,//y方向上的差分阶数
double scale=1,//缩放因子
double delta=0,// deltaֵ
intborderType=BORDER_DEFAULT )// 边界模式

1 Mat grad_x, grad_y; 2     Mat src = imread("E:/test.jpg", 0); 3     Scharr(src, grad_x, src.depth(), 1, 0, 1, 0, BORDER_DEFAULT); //和sobel类似 4     Scharr(src, grad_y, src.depth(), 0 , 1, 1, 0, BORDER_DEFAULT);  5     imshow("grad_x", grad_x); 6     imshow("grad_y", grad_y);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!