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

yipeiwu_com6年前Python基础

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

相关文章

python实现自主查询实时天气

python实现自主查询实时天气

本文实例为大家分享了python实现自主查询实时天气的具体代码,供大家参考,具体内容如下 用到了urllib2 json  很简单的一个应用 如下 获取城市编号 #cod...

对python中的iter()函数与next()函数详解

list、tuple等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器。然后我们可以对获取到的迭代器不断使⽤next()函数来获取下⼀条...

Python openpyxl模块原理及用法解析

Python openpyxl模块原理及用法解析

这篇文章主要介绍了Python openpyxl模块原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 此模块不是Pytho...

如何基于Python批量下载音乐

如何基于Python批量下载音乐

这篇文章主要介绍了如何基于Python批量下载音乐,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 音乐是生活的调剂品,目前很多的音乐只...

django中的图片验证码功能

django中的图片验证码功能

python的验证码库(captcha) 将验证码做成这样: 是不是和各大网页的图片源地址是一样,话不多说,让我们看代码: 我是用django和python中的captcha库做成 的...