def __init__(self, name: str, value_type: str, possible_values: List[str] = None, color: List[int]=None): """ :param name: str :param value_type: str (one of TagValueType fields) :param values: list of possible values (i.e. [str]) or None :param color: [R, G, B] """ if value_type not in SUPPORTED_TAG_VALUE_TYPES: raise ValueError("value_type = {!r} is unknown, should be one of {}".format(value_type, SUPPORTED_TAG_VALUE_TYPES)) self._name = name self._value_type = value_type self._possible_values = possible_values self._color = random_rgb() if color is None else deepcopy(color) if self._value_type == TagValueType.ONEOF_STRING: if self._possible_values is None: raise ValueError("TagValueType is ONEOF_STRING. List of possible values have to be defined.") if not all(isinstance(item, str) for item in self._possible_values): raise ValueError("TagValueType is ONEOF_STRING. All possible values have to be strings") elif self._possible_values is not None: raise ValueError("TagValueType is {!r}. possible_values variable have to be None".format(self._value_type)) _validate_color(self._color)
def __init__(self, name: str, geometry_type: type, color: List[int] = None, geometry_config: dict = None, sly_id=None, hotkey: str = None): """ Class of objects (person, car, etc) with necessary properties: name, type of geometry (Polygon, Rectangle, ...) and RGB color. Only one class can be associated with Label. Args: name: string name of the class (person, car, apple, etc) geometry_type: type of the geometry. Geometry defines the shape for all Labels of this ObjClass: Polygon, Rectangle, Bitmap, Polyline, Point color: [R, G, B] geometry_config: additional settings of the geometry that is associated with ObjClass Returns: ObjClass instance """ self._name = name self._geometry_type = geometry_type self._color = random_rgb() if color is None else deepcopy(color) self._geometry_config = deepcopy(take_with_default( geometry_config, {})) self._sly_id = sly_id self._hotkey = take_with_default(hotkey, "") _validate_color(self._color)
def convert(self): images_pathes = self._get_images_pathes() dataset_name = os.path.basename(os.path.normpath(self.dataset_dir)) out_pr = ProjectStructure(self.settings['res_names']['project']) for image_fp in images_pathes: image_ext = os.path.splitext(image_fp)[1] image_name = os.path.splitext(image_fp)[0] dt = {"image_ext": image_ext} out_pr.add_item(dataset_name, image_name, dt) out_pr_fs = ProjectFS(self.out_dir, out_pr) out_pr_fs.make_dirs() res_meta = ProjectMeta() for class_name in self.classes: # TODO: Fix it line by new meta and object classes res_meta.classes.add({ 'title': class_name, 'shape': 'bitmap', 'color': color_utils.rgb2hex(color_utils.random_rgb()) }) res_meta.to_dir(out_pr_fs.project_path) progress = progress_counter.progress_counter_import( out_pr.name, out_pr.image_cnt) for sample_info in out_pr_fs: self._convert_sample(sample_info, res_meta) progress.iter_done_report()
def convert(self): images_pathes = self._get_images_pathes() masks_map = self._get_masks_mapping() dataset_name = 'ds' out_pr = ProjectStructure(self.settings['res_names']['project']) for image_fp in images_pathes: base_name = os.path.basename(image_fp) image_ext = os.path.splitext(image_fp)[1] image_id = os.path.splitext(base_name)[0] if base_name.replace(image_ext, '') in masks_map: dt = {"image_ext": ".png", "image_orig_path": image_fp} out_pr.add_item(dataset_name, image_id, dt) out_pr_fs = ProjectFS(self.out_dir, out_pr) out_pr_fs.make_dirs() res_meta = ProjectMeta() # TODO: Fix it line by new meta and object classes res_meta.classes.add({ 'title': 'leaf', 'shape': 'bitmap', 'color': color_utils.rgb2hex(color_utils.random_rgb()) }) res_meta.to_dir(out_pr_fs.project_path) progress = progress_counter.progress_counter_import( out_pr.name, out_pr.image_cnt) for sample_info in out_pr_fs: self._convert_sample(sample_info, masks_map, res_meta) progress.iter_done_report()
def __init__(self, name: str, value_type: str, possible_values: List[str] = None, color: List[int] = None, sly_id=None, hotkey: str = None, applicable_to: str = None, applicable_classes: List[str] = None): """ :param name: str :param value_type: str (one of TagValueType fields) :param values: list of possible values (i.e. [str]) or None :param color: [R, G, B] """ if value_type not in SUPPORTED_TAG_VALUE_TYPES: raise ValueError( "value_type = {!r} is unknown, should be one of {}".format( value_type, SUPPORTED_TAG_VALUE_TYPES)) self._name = name self._value_type = value_type self._possible_values = possible_values self._color = random_rgb() if color is None else deepcopy(color) self._sly_id = sly_id self._hotkey = take_with_default(hotkey, "") self._applicable_to = take_with_default(applicable_to, TagApplicableTo.ALL) self._applicable_classes = take_with_default(applicable_classes, []) if self._applicable_to not in SUPPORTED_APPLICABLE_TO: raise ValueError( "applicable_to = {!r} is unknown, should be one of {}".format( self._applicable_to, SUPPORTED_APPLICABLE_TO)) if self._value_type == TagValueType.ONEOF_STRING: if self._possible_values is None: raise ValueError( "TagValueType is ONEOF_STRING. List of possible values have to be defined." ) if not all( isinstance(item, str) for item in self._possible_values): raise ValueError( "TagValueType is ONEOF_STRING. All possible values have to be strings" ) elif self._possible_values is not None: raise ValueError( "TagValueType is {!r}. possible_values variable have to be None" .format(self._value_type)) _validate_color(self._color)
def __init__(self, name: str, geometry_type: type, color: List[int]=None): """ Class of objects (person, car, etc) with necessary properties: name, type of geometry (Polygon, Rectangle, ...) and RGB color. Only one class can be associated with Label. Args: name: string name of the class (person, car, apple, etc) geometry_type: type of the geometry. Geometry defines the shape for all Labels of this ObjClass: Polygon, Rectangle, Bitmap, Polyline, Point color: [R, G, B] Returns: ObjClass instance """ self._name = name self._geometry_type = geometry_type self._color = random_rgb() if color is None else deepcopy(color) _validate_color(self._color)