ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenCV boundingRect、minAreaRect的用法区别

2021-01-27 12:04:34  阅读:199  来源: 互联网

标签:Mat boundingRect OpenCV depth points checkVector 矩形 minAreaRect


当得到对象轮廓后,可用boundingRect()得到包覆此轮廓的最小正矩形,minAreaRect()得到包覆轮廓的最小斜矩形。

1)Rect boundingRect(InputArray points)

points:输入信息,可以为包含点的容器(vector)或是Mat。
返回包覆输入信息的最小正矩形。如下图:

2)RotatedRect minAreaRect(InputArray points)

points:输入信息,可以为包含点的容器(vector)或是Mat。

返回包覆输入信息的最小斜矩形。如下图:

【说明】

如果参数是Mat类型的(注意需要是N行2列),必须满足depth == CV_32F || depth == CV_32S,且checkVector(2)才可以,否则会报错【minAreaRect()中主要调用的求凸包的函数convexHull()会检查Mat满不满足上面的条件】。

Mat::depth()函数:求矩阵中元素的一个通道的数据类型,这个值和type是相关的。

Mat::checkVector()函数:当Mat的channels,depth,和连续性  满足checkVector的参数内容时,返回(int)(total()*channels()/_elemChannels), 否则返回-1。checkVector(2),要求矩阵的列数位2。

注意:第二种(红色框)求得是真正的最小外接矩形,如下图所示说明。

标签:Mat,boundingRect,OpenCV,depth,points,checkVector,矩形,minAreaRect
来源: https://www.cnblogs.com/ybqjymy/p/14334228.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有