Introduction
Classes Color Mapping
widget allows users to edit class colors on the fly. This widget can be used when you have classes with similar colors and you want to change them to be more distinguishable.
Function signature
Copy classes_color_mapping = ClassesColorMapping (
classes = obj_classes,
grayscale = False ,
widget_id = None
)
Parameters
Parameters
Type
Description
Union[List[ObjClass], ObjClassCollection]
Supervisely object class collection or list of object classes
If True
convert selected RGB color to grayscale
classes
List of ObjClass
objects or Supervisely object class collection (ObjClassCollection
).
type: Union[List[ObjClass], ObjClassCollection]
Copy classes_color_mapping = ClassesColorMapping (
classes = obj_classes,
)
grayscale
If True
convert selected RGB color value to grayscale.
type: bool
default False
Copy classes_color_mapping = ClassesColorMapping (
classes = obj_classes,
grayscale = True
)
widget_id
ID of the widget.
type: str
default value: None
Methods and attributes
Attributes and Methods
Description
get_selected_classes_original()
Get classes with original colors.
get_selected_classes_edited()
Get classes with selected colors.
Return list of all classes.
Mini App Example
You can find this example in our Github repository:
supervisely-ecosystem/ui-widgets-demos/input/010_classes_color_mapping/src/main.py
Import libraries
Copy import os
import supervisely as sly
from supervisely . app . widgets import (
Card ,
Container ,
ClassesColorMapping ,
ClassesListPreview ,
Button ,
Text ,
)
from dotenv import load_dotenv
Init API client
First, we load environment variables with credentials and init API for communicating with Supervisely Instance:
Copy load_dotenv ( "local.env" )
load_dotenv (os.path. expanduser ( "~/supervisely.env" ))
api = sly . Api ()
Create list of object classes and init ClassesColorMapping
widget
Copy cat_obj_class = sly . ObjClass ( "cat" , sly.Rectangle, color = [ 255 , 0 , 0 ])
dog_obj_class = sly . ObjClass ( "dog" , sly.Polygon, color = [ 0 , 255 , 0 ])
horse_obj_class = sly . ObjClass ( "horse" , sly.Bitmap, color = [ 0 , 0 , 255 ])
cow_obj_class = sly . ObjClass ( "cow" , sly.Polyline, color = [ 255 , 255 , 0 ])
zebra_obj_class = sly . ObjClass ( "zebra" , sly.Point, color = [ 255 , 0 , 255 ])
obj_classes = [
cat_obj_class ,
dog_obj_class ,
horse_obj_class ,
cow_obj_class ,
zebra_obj_class ,
]
classes_color_mapping = ClassesColorMapping (obj_classes)
Initialize ClassesListPreview
widget to display changes and Button
widget to save changes
Copy classes_list_preview = ClassesListPreview ()
new_classes_names = Text ( f "Press button to save changes" , "info" )
save_button = Button ( "Save" , button_size = "mini" )
Create app layout
Prepare a layout for app using Card
widget with the content
parameter and place widget that we've just created into the Container
widget.
Copy container = Container ([classes_color_mapping, new_classes_names, save_button, classes_list_preview])
card = Card (
title = "Classes Color Mapping" ,
content = container,
)
layout = Container (widgets = [card])
Create app using layout
Create an app object with layout parameter.
Copy app = sly . Application (layout = layout)
Add functions to control widgets from python code
Copy @save_button . click
def save_changes ():
new_classes = classes_color_mapping . get_selected_classes_edited ()
classes_list_preview . set (new_classes)