修改边框坐标的方法

时间:2018-11-05 15:15:26

标签: python image-processing

我的数据集中的每个图像都有8个点(x1,y1,x2,y2,x3,y3,x4,y4)。

我的目标是训练Retina网络,但存储库要求格式类似于

path/to/image.jpg,x1,y1,x2,y2,class_name

他们只要求4分,就像这样的/data/imgs/img_001.jpg,837,346,981,456,cow

我对一张图像的8点看起来像这样-[[220, 129], [1028,113], [1098,684], [206,706]

有什么办法可以将我的8点转换为4。

预先感谢

1 个答案:

答案 0 :(得分:1)

假设这四对只是图像中应该位于边界框中的四个x,y点,

>>> vals = [[220, 129], [1028,113], [1098,684], [206,706]]
>>> bbox = [min([x[0] for x in vals]), min([x[1] for x in vals]),
...         max([x[0] for x in vals]), max([x[1] for x in vals])]
>>> print(bbox)
[206, 113, 1098, 706]
>>> imgpath = 'path/to/image.jpg'
>>> print('{},{},{}'.format(imgpath, ','.join(map(str, bbox)), 'clsname'))
path/to/image.jpg,206,113,1098,706,clsname