camera_kl520/utils/ExampleValue.py
2025-05-28 00:15:48 +08:00

127 lines
3.6 KiB
Python

# ******************************************************************************
# Copyright (c) 2022. Kneron Inc. All rights reserved. *
# ******************************************************************************
from typing import List
import os
import sys
PWD = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(1, os.path.join(PWD, '../..'))
from kp.KPBaseClass.ValueBase import ValueRepresentBase
class ExampleBoundingBox(ValueRepresentBase):
"""
Example Bounding box descriptor.
Attributes
----------
x1 : int, default=0
X coordinate of bounding box top-left corner.
y1 : int, default=0
Y coordinate of bounding box top-left corner.
x2 : int, default=0
X coordinate of bounding box bottom-right corner.
y2 : int, default=0
Y coordinate of bounding box bottom-right corner.
score : float, default=0
Probability score.
class_num : int, default=0
Class # (of many) with highest probability.
"""
def __init__(self,
x1: int = 0,
y1: int = 0,
x2: int = 0,
y2: int = 0,
score: float = 0,
class_num: int = 0):
"""
Example Bounding box descriptor.
Parameters
----------
x1 : int, default=0
X coordinate of bounding box top-left corner.
y1 : int, default=0
Y coordinate of bounding box top-left corner.
x2 : int, default=0
X coordinate of bounding box bottom-right corner.
y2 : int, default=0
Y coordinate of bounding box bottom-right corner.
score : float, default=0
Probability score.
class_num : int, default=0
Class # (of many) with highest probability.
"""
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.score = score
self.class_num = class_num
def get_member_variable_dict(self) -> dict:
return {
'x1': self.x1,
'y1': self.y1,
'x2': self.x2,
'y2': self.y2,
'score': self.score,
'class_num': self.class_num
}
class ExampleYoloResult(ValueRepresentBase):
"""
Example YOLO output result descriptor.
Attributes
----------
class_count : int, default=0
Total detectable class count.
box_count : int, default=0
Total bounding box number.
box_list : List[ExampleBoundingBox], default=[]
bounding boxes.
"""
def __init__(self,
class_count: int = 0,
box_count: int = 0,
box_list: List[ExampleBoundingBox] = []):
"""
Example YOLO output result descriptor.
Parameters
----------
class_count : int, default=0
Total detectable class count.
box_count : int, default=0
Total bounding box number.
box_list : List[ExampleBoundingBox], default=[]
bounding boxes.
"""
self.class_count = class_count
self.box_count = box_count
self.box_list = box_list
def _cast_element_buffer(self) -> None:
pass
def get_member_variable_dict(self) -> dict:
member_variable_dict = {
'class_count': self.class_count,
'box_count': self.box_count,
'box_list': {}
}
for idx, box_element in enumerate(self.box_list):
member_variable_dict['box_list'][idx] = box_element.get_member_variable_dict()
return member_variable_dict