当前位置:首页 > 编程笔记 > 正文
已解决

opencv-phase 函数

来自网友在路上 162862提问 提问时间:2023-10-14 04:34:07阅读次数: 62

最佳答案 问答题库628位专家为你答疑解惑

计算梯度强度和方向
梯度的方向与边缘的方向总是垂直的。图像中的边缘可以指向各个方向,通常会取水平(左、右)、垂直(上、下)、对角线(左上、右上、左下、右下)等八个不同的方向计算梯度。

角度的确定:
得到的角度一般不在前边指定的放个方向上,我们需要将角度分类到八个方向中。
假设有四条线,分别是0,45,90,135度线(0度和180重合,是一条线)。需要对通过(2)式求出的θ进行近似,分类到这四条线分成的八个区域中。

比如计算出的θ = 91 ° ,则应将其归类到67.5 ° — 112.5 °的区域,就是垂直向上方向。
八个区域如下图:

x方向的梯度 

y方向的梯度 

梯度的方向:θ =arctan(-255 / 255) = arctan(-1) = -45°

最后mat的计算结果:

 样例

Mat mat1(Size( 4 , 1 ), CV_32FC1), mat2(Size( 4 , 1 ), CV_32FC1), mat3;
mat1.at < float > ( 0 , 0 ) = 1 ;  mat2.at < float > ( 0 , 0 ) = 1 ;
mat1.at < float > ( 0 , 1 ) = 1 ;  mat2.at < float > ( 0 , 1 ) = - 1 ;
mat1.at < float > ( 0 , 2 ) = - 1 ; mat2.at < float > ( 0 , 2 ) = 1 ;
mat1.at < float > ( 0 , 3 ) = - 1 ; mat2.at < float > ( 0 , 3 ) = - 1 ;
phase(mat1,mat2,mat3, true );

最后mat3的计算结果:

由此可以看出opencv phase计算出的角度从0°-360°是已x轴正方向为0°,逆时针旋转增加,符合我们平常角度的计算方式。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"opencv-phase 函数":http://eshow365.cn/6-19380-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!