sczhou's picture
init code
320e465
raw
history blame
795 Bytes
import numpy as np
from threading import Lock
class ID2RGBConverter:
def __init__(self):
self.all_id = []
self.obj_to_id = {}
self.lock = Lock()
def _id_to_rgb(self, id: int):
rgb = np.zeros((3, ), dtype=np.uint8)
for i in range(3):
rgb[i] = id % 256
id = id // 256
return rgb
def convert(self, obj: int):
with self.lock:
if obj in self.obj_to_id:
id = self.obj_to_id[obj]
else:
while True:
id = np.random.randint(255, 256**3)
if id not in self.all_id:
break
self.obj_to_id[obj] = id
self.all_id.append(id)
return id, self._id_to_rgb(id)