OpenCV中RotatedRect的angle这个成员变量总是诡异的不同寻常(这里),官网也没有任何解释。
下面是获取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官方教程中文版(For Python) PDF http://www.linuxidc.com/Linux/2015-08/121400.htm
Ubuntu 14.04安装OpenCV2.4.9 http://www.linuxidc.com/Linux/2016-07/132884.htm
Ubuntu 16.04上用CMake图形界面交叉编译树莓派的OpenCV3.0 http://www.linuxidc.com/Linux/2016-10/135914.htm
Ubuntu 16.04中安装OpenCV 2.4.11 http://www.linuxidc.com/Linux/2016-07/132882.htm
Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安装 http://www.linuxidc.com/Linux/2016-07/132860.htm
Ubuntu 16.04下TensorFlow+Caffe+OpenCV3.1+Theano部署 http://www.linuxidc.com/Linux/2017-01/139503.htm
Ubuntu 16.04 编译安装OpenCV 3.1及OpenCV多版本切换 http://www.linuxidc.com/Linux/2017-01/139325.htm
[翻译]Ubuntu 14.04, 13.10 下安装 OpenCV 2.4.9 http://www.linuxidc.com/Linux/2014-12/110045.htm
Ubuntu 安装 OpenCV 2.4.9 http://www.linuxidc.com/Linux/2016-12/138293.htm
OpenCV的详细介绍:请点这里
OpenCV的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141705.htm