目前,我有一些代码,可以从Sobel导语中计算出幅度和方向。

mag, ang = cv2.cartToPolar(gx, gy, angleInDegrees=True)
ang = ang.clip(min=0, max=179.99999)


长话短说,我该如何强制角度为无符号且在[0,180]度之间而不会出现削波,这似乎会破坏直方图的分布。

是否有一个numpy函数将角度大于180,例如200,并拆分为160,或者我必须自己编写类似的代码。

使numpy数组仅包含-180至180的值,然后我可以采用abs值。

最佳答案

代替ang = ang.clip(min=0, max=179.99999),使用

ang = ang % 180


%是Python中的modulo operation
例如,这会将-135转换为45,我怀疑这是您想要的。也就是说,这两个角度都对应于斜率为1的线。

关于python - 正确的方法来获取0到180之间的梯度直方图的无符号角度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54410940/

10-10 10:08