OpenCV 指针仪表盘参数读取(五) 参数计算

在得到圆心信息和直线信息后,需要通过这些信息把他们转化为角度信息,在转化为我们需要的参数信息,这里需要用到math.h头文件中的反切函数,即

atan2(x, y)

这个函数是以x,y相对于0,0点的位置在不同象限上进行计算的,输出范围为-pi,pi,因此需要对它的输出值进行一定的转化,在OpenCV中,图像坐标系和常用的坐标系如下图:

故除第三象限,其他象限都为(3 * pi / 2) * ( - 原角度),第三象限为(pi / 2) * ( - 原角度),角度纠正代码如下:

float CalculateValue() {
	
	float angle = 0;
	float x, y;

	x = cho_l[2] - cho_l[0];
	y = -(cho_l[3] - cho_l[1]);

	// Angle Correction

	if (cho_l[2] > circle_center.x)
		if (cho_l[3] > circle_center.y)
			// first quadrant
			angle = ((3 * 3.14159 / 2) - atan2(x, y)) * 180 / 3.14159;
		else
			// second quadrant
			angle = ((3 * 3.14159 / 2) - atan2(x, y)) * 180 / 3.14159;
	else
		if (cho_l[3] < circle_center.y)
			// third quadrant
			angle = ((-3.14159 / 2) - atan2(x, y)) * 180 / 3.14159;
		else
			// fourth quadrant
			angle = ((3 * 3.14159 / 2) - atan2(x, y)) * 180 / 3.14159;

	return angle;
}

输出结果图:

欢迎评论文章,给予宝贵建议,工程提供在github下载学习,请关注作者,共同学习交流。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值