cv2.phase给出弧度的角度

Mir*_*nda 2 python opencv

我试图通过opencv python中的Sobel函数获得渐变的方向.问题是当我将x和y方向的梯度提供给相位函数时,无论相位度是真还是假,它总是给出相同的结果.以下是示例代码:

img = cv2.imread('frameBB.jpg',0)
sobelx = cv2.Sobel(img,cv2.CV_32F,1,0,ksize=3)
sobely= cv2.Sobel(img,cv2.CV_32F,0,1,ksize=3)
phase=cv2.phase(sobelx,sobely,True)
Run Code Online (Sandbox Code Playgroud)

然后我得到相位的直方图,并最终得到相位函数的最后一个参数为True或False的相同结果.两种情况下的直方图都是这样的.在此输入图像描述

这就是原始图像及其渐变图像的样子:

在此输入图像描述

我不确定我在这里做错了什么,以及为什么我得到两个案例的弧度渐变角度.

yhe*_*non 5

正如您 cv2.phase 的文档中所看到的:

cv2.phase(x, y[, angle[, angleInDegrees]])
Run Code Online (Sandbox Code Playgroud)

第三个位置参数实际上不是用于指定度/弧度,它用于输出数组.你想要改变的论点是angleInDegrees.您可以将其指定为第4个位置参数,或者通过使用关键字更明确地指定:

cv2.phase(sobelx,sobely,angleInDegrees=True)
Run Code Online (Sandbox Code Playgroud)

  • 这是做什么的?即使没有问题,一个好的答案也将独立存在. (2认同)