我遇到了 opencv 的 Sobel 边缘检测器的问题。 从它的文档来看,它似乎只适用于水平和垂直方向的边缘(通过指定 0,1 或 1,0)。 有没有人知道如何使用 cvSobel (不是 Canny 方法)获得 45deg 和 135deg 的对角边。
Matlab 有一个带有 edge(I,'sobel' ...) 选项的灵魂,但我的代码都是用 C++ 编写的,我想保持原样。

感谢您的建议和解决方案。

最佳答案

嘿。
您通常可以通过以下方式计算任何方向的任何过滤器:

  • resX = X 方向的计算结果
  • resY = 计算 Y 方向的结果
  • 选择所需的方向(角度 alpha)
  • 想要的结果是 sqrt((Y*sin(alpha))^2 + (X*cos(alpha))^2)

  • 这适用于边缘检测、运动模糊和任何 线性 定向过滤器。

    关于对角线的 Opencv Sobel 边缘检测(右上 45 度,左上 135 度),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6138241/

    10-09 13:10