Opencv学习——边缘检测(Scharr)

一般称scharr为滤波器,而不是算子。主要配合Sobel算子的运算而存在。

void Scharr( InputArray src, OutputArray dst, int ddepth,
                          int dx, int dy, double scale = 1, double delta = 0,
                          int borderType = BORDER_DEFAULT );

它的参数与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 );
src 输入图像
dst 目标图像
ddepth 输出图像的深度
dx x方向上的差分阶数
dy y方向上的差分阶数
scale 可缩放因子
delta 可选值 默认0
borderType 边界模式

所以:下面是等价的

Scharr(src,dst,ddepth,dx,dy,scale,delta,borderType)
sobel(src,dst,ddepth,dx,dy,CV_SCHARR,scale,delta,borderType)
#include
#include
using namespace cv;
int main()
{
	Mat dst;
	Mat grad_x, grad_y,grad_x_abs, grad_y_abs;
	Mat src = imread("F:/3.jpg");
	imshow("src", src);

	Scharr(src, grad_x, CV_16S, 1, 0, 1, 0);
	convertScaleAbs(grad_x, grad_x_abs);
	imshow("x_grad", grad_x_abs);
	Scharr(src, grad_y, CV_16S, 0,1, 1, 0);
	convertScaleAbs(grad_y, grad_y_abs);
	imshow("y_grad", grad_y_abs);
	addWeighted(grad_x_abs, 0.5, grad_y_abs, 0.5, 0, dst);
	imshow("zhengti", dst);
	waitKey(0);
	return 0;
}

Opencv学习——边缘检测(Scharr)_第1张图片

你可能感兴趣的:(Opencv笔记,OpenCV学习)