python opencv minAreaRect 生成最小外接矩形的方法


Posted in Python onJuly 01, 2019

使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是点集数组或向量(里面存放的是点的坐标),并且这个点集不定个数。

举例说明:画一个任意四边形(任意多边形都可以)的最小外接矩形,那么点集 cnt 存放的就是该四边形的4个顶点坐标(点集里面有4个点)

cnt = np.array([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) # 必须是array数组的形式
rect = cv2.minAreaRect(cnt) # 得到最小外接矩形的(中心(x,y), (宽,高), 旋转角度)
box = cv2.cv.BoxPoints(rect) # cv2.boxPoints(rect) for OpenCV 3.x 获取最小外接矩形的4个顶点坐标
box = np.int0(box)

函数 cv2.minAreaRect() 返回一个Box2D结构rect:(最小外接矩形的中心(x,y),(宽度,高度),旋转角度),但是要绘制这个矩形,我们需要矩形的4个顶点坐标box, 通过函数 cv2.cv.BoxPoints() 获得,返回形式[ [x0,y0], [x1,y1], [x2,y2], [x3,y3] ]。得到的最小外接矩形的4个顶点顺序、中心坐标、宽度、高度、旋转角度(是度数形式,不是弧度数)的对应关系如下:

python opencv minAreaRect 生成最小外接矩形的方法

注意:

  • 旋转角度θ是水平轴(x轴)逆时针旋转,与碰到的矩形的第一条边的夹角。并且这个边的边长是width,另一条边边长是height。也就是说,在这里,width与height不是按照长短来定义的。
  • 在opencv中,坐标系原点在左上角,相对于x轴,逆时针旋转角度为负,顺时针旋转角度为正。所以,θ∈(-90度,0]。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 从远程服务器下载日志文件的程序
Feb 10 Python
Python发送http请求解析返回json的实例
Mar 26 Python
python对离散变量的one-hot编码方法
Jul 11 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Python 实现微信自动回复的方法
Sep 11 Python
Python colormap库的安装和使用详情
Oct 06 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 #Python
Python之pymysql的使用小结
Jul 01 #Python
linux下安装python3和对应的pip环境教程详解
Jul 01 #Python
python写日志文件操作类与应用示例
Jul 01 #Python
python实现自动化上线脚本的示例
Jul 01 #Python
在Python中构建增广矩阵的实现方法
Jul 01 #Python
django框架实现模板中获取request 的各种信息示例
Jul 01 #Python
You might like
php.ini 配置文件的深入解析
2013/06/17 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
js中判断控件是否存在
2010/08/25 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
详解js获取video任意时间的画面截图
2019/04/17 Javascript
vue实现评论列表功能
2019/10/25 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
Python变量和字符串详解
2017/04/29 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
在python里面运用多继承方法详解
2019/07/01 Python
Python-opencv 双线性插值实例
2020/01/17 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
标准毕业生自荐信范文
2013/11/04 职场文书
主治医师岗位职责
2013/12/10 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
教导处工作制度
2014/01/18 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
python playwright 自动等待和断言详解
2021/11/27 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL