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中的super()方法使用简介
Aug 14 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
python实现手机通讯录搜索功能
Feb 22 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
python读取几个G的csv文件方法
Jan 07 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
python中列表的含义及用法
May 26 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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出错界面
2006/10/09 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python文件写入实例分析
2015/04/08 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
.net软件工程师面试题
2015/03/31 面试题
如何进行Linux分区优化
2013/02/12 面试题
应届毕业生自我鉴定范文
2013/12/27 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
嘉宾邀请函
2015/01/31 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python