opencv 寻找最小矩形minAreaRect 的角度问题
最近自己试了试车牌识别,期间遇到一个问题,就是在寻找最小矩形过程中,怎么判断矩形的角度,在此记录一下:
- minAreaRect()
-
作用
- 是计算离散点集的最小外包矩形; 输入:
- 离散点集; 输出:
- 在C++中是一个结构体,在python中是一个list,内容为[center (x,y), (width, height), angle of rotation]
那么问题来了,其中angle of rotation怎么理解呢?对于一个长方形来说,到底是长边与横坐标的角度还是短边和横坐标的角度?
先看一下C++的源码:
cv::RotatedRect cv::minAreaRect( InputArray _points )
{
Mat points = _points.getMat();
CV_Assert(points.checkVector(2) >= 0 && (points.depth() == CV_32F || points.depth() == CV_32S));
CvMat _cpoints = points;
return cvMinAreaRect2(&_cpoints, 0);
}
CV_IMPL CvBox2D
cvMinAreaRect2( const CvArr* array, CvMemStorage* storage )
{
cv::Ptr<CvMemStorage> temp_storage;
CvBox2D box;
cv::AutoBuffer<CvPoint2D32f> _points;
CvPoint2D32f* points;
memset(&box, 0, sizeof(box));
int i, n;
CvSeqReader reader;
CvContour contour_header;
CvSeqBlock block;
CvSeq* ptseq = (CvSeq*)array;
CvPoint2D32f out[