在OpenCV中获取渐变方向

时间:2014-03-19 12:05:20

标签: c++ opencv

我必须找到图像中渐变的方向。我已经获得了Gx,Gy和总梯度。

//Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
          Sobel( img, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );
          convertScaleAbs( grad_x, abs_grad_x ); //Gradiente en X

          /// Gradient Y
          //Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
          Sobel( img, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );
          convertScaleAbs( grad_y, abs_grad_y ); //Gradiente en Y

          /// Total Gradient (approximate)
          addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad ); //Magnitud del Gradiente

现在,我必须找到渐变的方向,但我找不到任何代码来获取它。我知道这个理论,但我不知道把它付诸实践。

任何人都知道如何获得渐变的方向?

感谢您的时间

编辑:我试图用这个:

Mat modulo;
        Mat orientacion;
        cartToPolar(abs_grad_x,abs_grad_y,modulo,orientacion);

但它给了我一个错误:

OpenCV Error: Assertion failed (X.size == Y.size && type == Y.type() && (depth == CV_32F || depth == CV_64F)) in cartToPolar, file C:\OpenCV246PC\opencv\modules\core\src\mathfuncs.cpp, line 448

我尝试将深度更改为CV_32F,渐变图像不正确。

0 个答案:

没有答案