c++ - 我需要修改用于对角线边缘检测的 Sobel 内核。 OpenCV 和 C++

标签 c++ opencv edge-detection

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

+1 0 0 0 0 0 0 0 -1

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

然后合并两个输出图像。但我不知道一般如何编写循环/将过滤器应用于图像。

最佳答案

您可以使用名为 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);

关于c++ - 我需要修改用于对角线边缘检测的 Sobel 内核。 OpenCV 和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632556/

相关文章:

c++ - 使用 OpenCV 的低质量空中拼接

java - 使用边缘检测进行图像匹配

python - pyLCIO setMomentum : error const float* in python

C++11 内部 std::string 表示 (libstdc++)

c++ - OpenCV 图像加载程序退出

image-processing - 边缘检测来识别艺术家风格?

matlab:找到图片中对象的外边缘

c++ - 在 XCode 中发出未使用的参数警告

c++ - 如何影响_calling_函数的值返回?

c++ opencv在窗口上显示图像