File size: 1,752 Bytes
ac6e446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# vim: expandtab:ts=4:sw=4
import numpy as np


class Detection(object):
    """

    This class represents a bounding box detection in a single image.



    Parameters

    ----------

    tlwh : array_like

        Bounding box in format `(x, y, w, h)`.

    confidence : float

        Detector confidence score.

    feature : array_like

        A feature vector that describes the object contained in this image.



    Attributes

    ----------

    tlwh : ndarray

        Bounding box in format `(top left x, top left y, width, height)`.

    confidence : ndarray

        Detector confidence score.

    feature : ndarray | NoneType

        A feature vector that describes the object contained in this image.



    """

    def __init__(self, tlwh, confidence, feature):
        self.tlwh = np.asarray(tlwh, dtype=np.float32)
        self.confidence = float(confidence)
        self.feature = np.asarray(feature.cpu(), dtype=np.float32)

    def to_tlbr(self):
        """Convert bounding box to format `(min x, min y, max x, max y)`, i.e.,

        `(top left, bottom right)`.

        """
        ret = self.tlwh.copy()
        ret[2:] += ret[:2]
        return ret

    def to_xyah(self):
        """Convert bounding box to format `(center x, center y, aspect ratio,

        height)`, where the aspect ratio is `width / height`.

        """
        ret = self.tlwh.copy()
        ret[:2] += ret[2:] / 2
        ret[2] /= ret[3]
        return ret
    
def to_xyah_ext(bbox):
    """Convert bounding box to format `(center x, center y, aspect ratio,

    height)`, where the aspect ratio is `width / height`.

    """
    ret = bbox.copy()
    ret[:2] += ret[2:] / 2
    ret[2] /= ret[3]
    return ret