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生成器实现微线程编程的教程
Apr 13 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
tornado 多进程模式解析
Jan 15 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
Python3 JSON编码解码方法详解
Sep 06 Python
python else语句在循环中的运用详解
Jul 06 Python
关于python中remove的一些坑小结
Jan 04 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
Autopep8的使用(python自动编排工具)
Mar 02 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
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php获取参数的几种方法总结
2014/02/18 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python logging模块的使用详解
2020/10/23 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
出纳的岗位职责
2013/11/09 职场文书
资料员岗位职责
2013/11/17 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL