Source code for wbia.detecttools.pascaldata.pascal_object

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import math
from wbia.detecttools.pascaldata import common as com
from wbia.detecttools.pascaldata.pascal_part import PASCAL_Part


BINS = [
    'left',
    'front_left',
    'front',
    'front_right',
    'right',
    'back_right',
    'back',
    'back_left',
]


[docs]class PASCAL_Object(object): def __init__(pascalo, _xml, width, height, name=None, **kwargs): if name is None: pascalo.name = com.get(_xml, 'name') pascalo.pose = com.get(_xml, 'pose') pascalo.truncated = com.get(_xml, 'truncated') == '1' pascalo.difficult = com.get(_xml, 'difficult') == '1' bndbox = com.get(_xml, 'bndbox', text=False) pascalo.xmax = min(width, int(float(com.get(bndbox, 'xmax')))) pascalo.xmin = max(0, int(float(com.get(bndbox, 'xmin')))) pascalo.ymax = min(height, int(float(com.get(bndbox, 'ymax')))) pascalo.ymin = max(0, int(float(com.get(bndbox, 'ymin')))) pascalo.parts = [ PASCAL_Part(part) for part in com.get(_xml, 'part', text=False, singularize=False) ] else: pascalo.name = name pascalo.pose = -1 pascalo.truncated = False pascalo.difficult = False pascalo.xmax = min(width, int(_xml['xmax'])) pascalo.xmin = max(0, int(_xml['xmin'])) pascalo.ymax = min(height, int(_xml['ymax'])) pascalo.ymin = max(0, int(_xml['ymin'])) pascalo.parts = [] # Pose if isinstance(pascalo.pose, str): pascalo.pose_str = pascalo.pose elif pascalo.pose < 0: pascalo.pose_str = 'Unspecified' else: bin_size = 2.0 * math.pi / len(BINS) temp = float(pascalo.pose) + 0.5 * bin_size temp %= 2.0 * math.pi pascalo.pose_str = BINS[int(temp / bin_size)] pascalo.width = pascalo.xmax - pascalo.xmin pascalo.height = pascalo.ymax - pascalo.ymin pascalo.xcenter = int(pascalo.xmin + (pascalo.width / 2)) pascalo.ycenter = int(pascalo.ymin + (pascalo.height / 2)) pascalo.area = pascalo.width * pascalo.height def __len__(pascalo): return len(pascalo.parts)
[docs] def bounding_box(pascalo, parts=False): _parts = [part.bounding_box() for part in pascalo.parts] retval = [ pascalo.name, pascalo.xmax, pascalo.xmin, pascalo.ymax, pascalo.ymin, _parts, ] return retval