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 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
Python类方法__init__和__del__构造、析构过程分析
Mar 06 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
django 在原有表格添加或删除字段的实例
May 27 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
Python连接mysql方法及常用参数
Sep 01 Python
python 基于opencv去除图片阴影
Jan 26 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
Python+Tkinter打造签名设计工具
Apr 01 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP 图片水印类代码
2012/08/27 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
python绘制直线的方法
2018/06/30 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python能做哪些生活有趣的事情
2020/09/09 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
Sony C++笔试题
2013/03/10 面试题
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL