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实现导出数据生成excel报表的方法示例
Jul 12 Python
Python实现图片转字符画的示例代码
Aug 21 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
python+Splinter实现12306抢票功能
Sep 25 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
python求质数列表的例子
Nov 24 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
使用jupyter notebook运行python和R的步骤
Aug 13 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
用ODBC的分页显示
2006/10/09 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
常用的javascript function代码
2008/05/23 Javascript
什么是JavaScript
2009/08/13 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
Python实现二分查找算法实例
2015/05/26 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
新奇的小玩意:IWOOT
2016/07/21 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
社区务虚会发言材料
2014/10/20 职场文书
停课通知书
2015/04/24 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android