不同类别对象的多个颜色边界框

Multiple color bounding-boxes for different category objects

我正在实施“BBAVectors-Oriented-Object-Detection”https://github.com/yijingru/BBAVectors-Oriented-Object-Detection 模型。测试模型后,所有检测到的对象都显示有相同颜色的边界框。

以下是 link 到 test.py 代码 https://github.com/yijingru/BBAVectors-Oriented-Object-Detection/blob/master/test.py。我发现以下代码行改变了边界框的颜色。

ori_image = cv2.drawContours(ori_image, [np.int0(box)], -1, (255,0,255),1,1)

但是,它一次只需要一种颜色。

此外,在“BBAVectors-Oriented-Object-Detection”的另一个文件“dataset_dota.py”中https://github.com/yijingru/BBAVectors-Oriented-Object-Detection/blob/master/datasets/dataset_dota.py我找到了每个对象类别的指定颜色。

class DOTA(BaseDataset):
    def __init__(self, data_dir, phase, input_h=None, input_w=None, down_ratio=None):
        super(DOTA, self).__init__(data_dir, phase, input_h, input_w, down_ratio)
        self.category = ['plane',
                         'baseball-diamond',
                         'bridge',
                         'ground-track-field',
                         'small-vehicle',
                         'large-vehicle',
                         'ship',
                         'tennis-court',
                         'basketball-court',
                         'storage-tank',
                         'soccer-ball-field',
                         'roundabout',
                         'harbor',
                         'swimming-pool',
                         'helicopter'
                         ]
        self.color_pans = [(204,78,210),
                           (0,192,255),
                           (0,131,0),
                           (240,176,0),
                           (254,100,38),
                           (0,0,255),
                           (182,117,46),
                           (185,60,129),
                           (204,153,255),
                           (80,208,146),
                           (0,0,204),
                           (17,90,197),
                           (0,255,255),
                           (102,255,102),
                           (255,255,0)]
        self.num_classes = len(self.category)
        self.cat_ids = {cat:i for i,cat in enumerate(self.category)}
        self.img_ids = self.load_img_ids()
        self.image_path = os.path.join(data_dir, 'images')
        self.label_path = os.path.join(data_dir, 'labelTxt')

我比较熟悉 Python 和 Opencv。如果有人可以帮助我 link 这些文件并在不同的颜色边界框中显示检测到的对象,或者使用其他方法在不同的颜色边界框中显示不同的对象类别,我将不胜感激。谢谢

当前版本检测到的对象如下:

detected samples

这是一个片段:

# Initialize the DOTA Class 
dota_object = DOTA(data_dir, phase)

# Get color 
object = 'plane'
id = dota_object.category.index(object)
color = dota_object.color_pans[id]

# Display the image
ori_image = cv2.drawContours(ori_image, [np.int0(box)], -1, color,1,1)

将变量替换为代码中的变量 (ori_imagedota_objectdata_dirphase)