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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
Python3实现的字典、列表和json对象互转功能示例
May 22 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
python定时截屏实现
Nov 02 Python
Django与数据库交互的实现
Jun 03 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
JS实现php的伪分页
2008/05/25 PHP
PHP学习之正则表达式
2011/04/17 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
js切换div css注意的细节
2012/12/10 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
javascript数组去重小结
2016/03/07 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
跟老齐学Python之总结参数的传递
2014/10/10 Python
Python探索之创建二叉树
2017/10/25 Python
全面分析Python的优点和缺点
2018/02/07 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
python 实现图片批量压缩的示例
2020/12/18 Python
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
中科软笔试题和面试题
2014/10/07 面试题
公司业务主管岗位职责
2013/12/07 职场文书
初中地理教学反思
2014/01/11 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
招聘专员岗位职责
2014/03/07 职场文书
社区助残日活动总结
2014/08/29 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
简单的辞职信模板
2015/05/12 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
如何利用js在两个html窗口间通信
2021/04/27 Javascript