C/C++ OpenCV之Scharr边缘检测

计算图像差分Scharr()函数

void Scharr(

inputArray src,

outputArray dst,

int deepth,

int dx,

int dy,

double scale=1,

double delta=0,

int borderType=BORDER_DEFAULT

)

Scharr边缘检测
x和y方向的图像差分


下面是代码:


#include 
#include 
using namespace cv;

int main()
{
	Mat src = imread("1.jpg");
	namedWindow("原图");
	imshow("原图", src);

	//x方向
	Mat grad_x;
	Scharr(src, grad_x, CV_8U, 1, 0, 1, 0, BORDER_DEFAULT);
	namedWindow("x方向");
	imshow("x方向", grad_x);

	//y方向
	Mat grad_y;
	Scharr(src, grad_y, CV_8U, 0, 1, 1, 0, BORDER_DEFAULT);
	namedWindow("y方向");
	imshow("y方向", grad_y);

	//x+y方向
	Mat dst;
	addWeighted(grad_x, 0.5, grad_y, 0.5, 0, dst);
	namedWindow("x+y");
	imshow("x+y", dst);

	waitKey();

	return 0;
}

运行结果:

C/C++ OpenCV之Scharr边缘检测_第1张图片

可见x方向,竖直检查比较好

y方向,横轴检查比较好

你可能感兴趣的:(OpenCV)