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 相关文章推荐
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python记录程序运行时间的三种方法
Jul 14 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
Python 变量类型详解
Oct 10 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
简单了解python PEP的一些知识
Jul 13 Python
python批量解压zip文件的方法
Aug 20 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
opencv 分类白天与夜景视频的方法
Jun 05 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 计划任务 检测用户连接状态
2012/03/29 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PDO::rollBack讲解
2019/01/29 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
脚本收藏iframe
2006/07/21 Javascript
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
javascript中的隐式调用
2018/02/10 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
js实现计算器功能
2020/08/10 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python发送email的3种方法
2015/04/28 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Java基础面试题
2012/11/02 面试题
我的生日感言
2015/08/03 职场文书
小学英语教学反思范文
2016/02/15 职场文书