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实现股市信息下载的方法
Jun 15 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
python监控键盘输入实例代码
Feb 09 Python
python实现随机漫步算法
Aug 27 Python
选择python进行数据分析的理由和优势
Jun 25 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
详解python常用命令行选项与环境变量
Feb 20 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
python 如何执行控制台命令与操作剪切板
May 20 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 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中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php pdo操作数据库示例
2017/03/10 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
初识Node.js
2014/09/03 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
js初始化验证实例详解
2016/11/26 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
VueJs组件prop验证简单介绍
2017/09/12 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
python实现在windows下操作word的方法
2015/04/28 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
python之super的使用小结
2018/08/13 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
物业管理计划书
2014/01/10 职场文书
制作部班长职位说明书
2014/02/26 职场文书
党员入党表决心的话
2014/03/11 职场文书
2014年高考决心书
2014/03/11 职场文书
团队会宣传标语
2014/10/09 职场文书
首席执行官观后感
2015/06/03 职场文书
天鹅湖观后感
2015/06/09 职场文书
2016年记者节感言
2015/12/08 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL