Python使用matplotlib 画矩形的三种方式分析


Posted in Python onOctober 31, 2019

本文实例讲述了Python使用matplotlib 画矩形的三种方式。分享给大家供大家参考,具体如下:

假设矩形两点坐标如下,分别为:x1, y1, x2, y2

cat_dict['bbox'][i] = (min_row, min_col, max_row, max_col)

1. plt.plot(x,y)

这种方式画的矩形 因为边距的问题 会放缩

plt.plot([cat_dict['bbox'][i][1], cat_dict['bbox'][i][3], cat_dict['bbox'][i][3], cat_dict['bbox'][i][1], cat_dict['bbox'][i][1]], # col
     [cat_dict['bbox'][i][0], cat_dict['bbox'][i][0], cat_dict['bbox'][i][2], cat_dict['bbox'][i][2], cat_dict['bbox'][i][0]], # row
     color=[c / 255 for c in label_colors[cat_idx]], marker='.', ms=0)

2. ax.add_line(Line2D)

添加 4 条直线的方式,比较繁琐

from matplotlib.lines import Line2D
color = [c / 255 for c in label_colors[cat_idx]]
ax.add_line(Line2D([cat_dict['bbox'][i][1], cat_dict['bbox'][i][3]],
          [cat_dict['bbox'][i][0], cat_dict['bbox'][i][0]], 
          linewidth=2, 
          color=color))
ax.add_line(Line2D([cat_dict['bbox'][i][3], cat_dict['bbox'][i][3]],
          [cat_dict['bbox'][i][0], cat_dict['bbox'][i][2]], 
          linewidth=2, 
          color=color))
ax.add_line(Line2D([cat_dict['bbox'][i][3], cat_dict['bbox'][i][1]],
          [cat_dict['bbox'][i][2], cat_dict['bbox'][i][2]], 
          linewidth=2, 
          color=color))
ax.add_line(Line2D([cat_dict['bbox'][i][1], cat_dict['bbox'][i][1]],
          [cat_dict['bbox'][i][2], cat_dict['bbox'][i][0]], 
          linewidth=2, 
          color=color))

3. plt.gca().add_patch(plt.Rectangle())

最好的一种实现方式,fast rcnn 也是这么用的,传送门

plt.gca().add_patch(plt.Rectangle(xy=(cat_dict['bbox'][i][1], cat_dict['bbox'][i][0]),
width=cat_dict['bbox'][i][3] - cat_dict['bbox'][i][1], 
height=cat_dict['bbox'][i][2] - cat_dict['bbox'][i][0],
edgecolor=[c / 255 for c in label_colors[cat_idx]],
fill=False, linewidth=2))

Python使用matplotlib 画矩形的三种方式分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
浅析Python多线程下的变量问题
Apr 28 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
Python3搜索及替换文件中文本的方法
May 22 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
python装饰器与递归算法详解
Feb 18 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
selenium+python自动化测试之环境搭建
Jan 23 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
python3使用GUI统计代码量
Sep 18 Python
django正续或者倒序查库实例
May 19 Python
python实现操作文件(文件夹)
Oct 31 #Python
python用requests实现http请求代码实例
Oct 31 #Python
python zip()函数使用方法解析
Oct 31 #Python
python实现按首字母分类查找功能
Oct 31 #Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 #Python
python+Django实现防止SQL注入的办法
Oct 31 #Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 #Python
You might like
apache rewrite_module模块使用教程
2008/01/10 PHP
php header示例代码(推荐)
2010/09/08 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
PHP中常用的转义函数
2014/02/28 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
详解Python的Django框架中的通用视图
2015/05/04 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
大学活动总结格式
2014/04/29 职场文书
创意婚礼策划方案
2014/05/18 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
司机岗位职责范本
2015/04/10 职场文书