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编写的微博应用
Oct 17 Python
Python实现将n个点均匀地分布在球面上的方法
Mar 12 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python安装pycurl失败的解决方法
Oct 15 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
使用cx_freeze把python打包exe示例
2014/01/24 Python
python抓取网页图片并放到指定文件夹
2014/04/24 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
目前最全的python的就业方向
2018/06/05 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python代码需要缩进吗
2020/07/01 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
海南地接欢迎词
2014/01/14 职场文书
户外拓展活动方案
2014/02/11 职场文书
学习教师法的心得体会
2014/09/03 职场文书
学生检讨书
2015/01/27 职场文书
品质保证书格式
2015/02/28 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
二年级作文之动物作文
2019/11/13 职场文书