编写不易如果觉得不错,麻烦关注一下~
目标,把数据集中的方位标出来,上面是实现效果的样本
from PIL import Image
import pylab
import matplotlib.pyplot as plt
img = Image.open('cat_dog.jpg')
import matplotlib.patches as patches
dog_bbox, cat_bbox = [60, 45, 350, 400], [370, 100, 500, 350]
def bbox_to_rect(bbox, color,img): # 本函数已保存在d2lzh_pytorch中方便以后使用
# 将边界框(左上x, 左上y, 右下x, 右下y)格式转换成matplotlib格式:
# ((左上x, 左上y), 宽, 高)
#bbox
width = bbox[2] - bbox[0]
height = bbox[3] - bbox[1]
bbox1 = plt.Rectangle(
xy=(bbox[0], bbox[1]), width=width, height=height,
fill=False, edgecolor=color, linewidth=2)
fig = plt.imshow(img);#*width*height
fig.axes.add_patch(bbox1)
plt.text(bbox[0],
bbox[1], s='hello',
color='white',
verticalalignment='bottom',
bbox={'color':'red', 'pad': 0})
bbox_to_rect(dog_bbox, 'red', img)
bbox_to_rect(cat_bbox, 'blue', img)
pylab.show()
原图
下面从train_id 的第一个索引看起。只看第一幅图,就应该知道数据集的位置关系、语义关系的设置(后来发现 train_ids.pkl 程序中并没有采用这个文件,所以大家只当是如何显示框即象限即可,所以所放置的图片不对)
下面就是第一幅图
其数据集中所对应的36个固定框
将上面的36个框稍微修改标注函数,即可得到下面的图片其中编号即为框的排列序号。
看一下之前的一篇文章的方位角类别信息
太密集先放前10个
看0 索引与其他索引的框之间的类别号是否如截图分区所示。
如果只画框的中心点:
看一下关系类型 :整幅图大部分仍属于稀疏状态。
Here are the 15 relationships used in semantic relationship classifier:
wearing, holding, sitting on, standing on, riding, eating, hanging from, carrying, attached to, walking on, playing, covering, lying on, watching, looking at
部分绘制代码,水平线与垂直线以及两个斜线。构成八象限分区图
plt.plot(center_x, center_y, 'r*',)
plt.text(center_x,
center_y, s=str(i),
color='white',
verticalalignment='bottom',
bbox={'color':'red', 'pad': 0})
#
if i == 0:
plt.axhline(y=center_y, ls="-", c="green")
plt.axvline(x=center_x, ls="-", c="green")
plt.plot([center_x, center_x +100], [center_y, center_y+100])
plt.plot([center_x, center_x - 100], [center_y, center_y + 100])
plt.plot([center_x, center_x + 300], [center_y, center_y - 300])
plt.plot([center_x, center_x -300], [center_y, center_y-300])