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去掉空白行的多种实现代码
Mar 19 Python
python如何将图片转换为字符图片
Aug 19 Python
python调用摄像头显示图像的实例
Aug 03 Python
Python线程同步的实现代码
Oct 03 Python
基于python实现KNN分类算法
Apr 23 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
python字符串替换re.sub()实例解析
Feb 09 Python
基于K.image_data_format() == 'channels_first' 的理解
Jun 29 Python
简单了解Python字典copy与赋值的区别
Sep 16 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/10/31 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
php的socket编程详解
2016/11/20 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
改进Django中的表单的简单方法
2015/07/17 Python
Django logging配置及使用详解
2019/07/23 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
2014年小学植树节活动方案
2014/03/02 职场文书
小学开学典礼主持词
2014/03/19 职场文书
单位在职证明书
2014/09/11 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
Nginx HTTP跳转至HTTPS
2022/05/15 Servers
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS