获取OpenCV中RotatedRect的绝对角度
2015-02-03 11:54
567 查看
opencv中RotatedRect的angle这个成员变量总是诡异的不同寻常(http://stackoverflow.com/questions/15956124/minarearect-angles-unsure-about-the-angle-returned),官网也没有任何解释。
下面是获取RotatedRect的绝对角度(0-180)的函数:
下面是获取RotatedRect的绝对角度(0-180)的函数:
static double calcLineDegree(const Point2f& firstPt, const Point2f& secondPt) { double curLineAngle = 0.0f; if (secondPt.x - firstPt.x != 0) { curLineAngle = atan(static_cast<double>(firstPt.y - secondPt.y) / static_cast<double>(secondPt.x - firstPt.x)); if (curLineAngle < 0) { curLineAngle += CV_PI; } } else { curLineAngle = CV_PI / 2.0f; //90度 } return curLineAngle*180.0f/CV_PI; } static double getRcDegree(const RotatedRect box) { double degree = 0.0f; Point2f vertVect[4]; box.points(vertVect); //line 1 const double firstLineLen = (vertVect[1].x - vertVect[0].x)*(vertVect[1].x - vertVect[0].x) + (vertVect[1].y - vertVect[0].y)*(vertVect[1].y - vertVect[0].y); //line 2 const double secondLineLen = (vertVect[2].x - vertVect[1].x)*(vertVect[2].x - vertVect[1].x) + (vertVect[2].y - vertVect[1].y)*(vertVect[2].y - vertVect[1].y); if (firstLineLen > secondLineLen) { degree = calcLineDegree(vertVect[0], vertVect[1]); } else { degree = calcLineDegree(vertVect[2], vertVect[1]); } return degree; }
相关文章推荐
- 获取OpenCV中RotatedRect的绝对角度
- OpenCV学习六:findContours、drawContours、仿射变换、RotatedRect区域矫正及获取
- opencv学习笔记:RotatedRect和CvBox2D的角度疑云
- 关于opencv中RotatedRect的角度疑问
- opencv:RotatedRect和CvBox2D的角度疑云
- OpenCV RotatedRect angle is wrong
- OpenCV对图片中的RotatedRect进行填充
- opencv2.32学习笔记 有向边框RotatedRect的绘制 以及外边框计算
- 【OPENCV】点与RotatedRect矩形的包含关系
- 【转】OpenCV对图片中的RotatedRect进行填充
- OpenCV入门之获取图像的旋转角度
- Opencv寻找轮廓的最小外接矩形,并获取矩形的中心点,旋转角度
- opencv 3.0 旋转矩形 RotatedRect
- 基础——RotatedRect中返回的角度angle
- OpenCV中两个旋转矩形RotatedRect的交集
- OpenCV笔记(RotatedRect)
- 【OpenCV】通过鼠标在图像中绘制RotatedRect旋转矩形
- OpenCV中RotatedRect 以及 Rect介绍
- 基础——RotatedRect中返回的角度angle
- RotatedRect和CvBox2D的角度疑云