我需要修改Sobel内核以进行对角线边缘检测.OpenCV和C++

use*_*700 1 c++ opencv edge-detection

我需要在图像上应用这两个内核.

+1 0 0 0 0 0 0 0 -1

和0 0 +1 0 0 0 -1 0 0

然后组合两个输出图像.但我不知道如何将循环/应用滤镜写入一般的图像.

Mic*_*nov 6

您可以使用名为filter2d的函数.它允许您将任意内核应用于图像,因此您不需要自己执行任何循环.只需将您在Mat中提到的内核存储起来,并将其作为输入提供给filter2d以及您的图像.

使用示例:

float m[9] = {0,0,0,-1,0,1,0,0,0};
Mat kernel(Size(3,3), CV_32F, m);
filter2D(src, dst, -1, kernel);
Run Code Online (Sandbox Code Playgroud)