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 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python实现读取json文件到excel表
Nov 18 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
Python for循环生成列表的实例
Jun 15 Python
Python实现的简单计算器功能详解
Aug 25 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
Python数据类型之List列表实例详解
May 08 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
js实现日历的简单算法
2017/01/24 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python 动态加载的实现方法
2017/12/22 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python多线程下信号处理程序示例
2019/05/31 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
店长岗位的工作内容
2013/11/12 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
Python实现生活常识解答机器人
2021/06/28 Python
HTML基础详解(下)
2021/10/16 HTML / CSS
python 详解turtle画爱心代码
2022/02/15 Python