【OpenCV】计算二维平面内两个矢量的旋转角度(带方向)

计算二维平面内两个矢量的旋转角度(带方向)

OpenCV中,计算两个方向向量的旋转角度及旋转方向。基本思路:向量1旋转到x轴正方向,记录对应的旋转角度,同理,将方向向量2旋转到x轴正方向,记录旋转角度,两角度作差,计算出从向量1旋转到向量2的角度,角度值为正,则为顺时针旋转,反之为逆时针旋转。

示例代码

#include <iostream>
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
int main()
{

	Point2f p1(90.011, 32.924), p2(126.827, 100), p3(90.011, 0.0001576);
	Point2f p4(59.589, 67.076), p5(0.00011792, 67.076), p6(59.589, 0);
	Vec2f  v(30.422, -34.152), v1(36.816, 67.076), v2(0, -32.9238), v3(-59.58888), v4(0, -67.076);
	
	float angle1 = atan2(v[1], v[0]) * 180 / CV_PI;
	float angle2 = atan2(v1[1], v1[0]) * 180 / CV_PI;
	float angle3 = atan2(v2[1], v2[0]) * 180 / CV_PI;
	float angle4 = atan2(v3[1], v3[0]) * 180 / CV_PI;
	float angle5 = atan2(v4[1], v4[0]) * 180 / CV_PI;
	
	float beta1 = angle2 - angle1;
	float beta2 = angle3 - angle1;
	float beta3 = angle4 - angle1;
	float beta4 = angle5 - angle1;

	cout << "beta1: " << beta1 << endl;
	cout << "beta2: " << beta2 << endl;
	cout << "beta3: " << beta3 << endl;
	cout << "beta4: " << beta4 << endl;

	system("pause");
}

测试结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shanhedian2013

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值