Files
annotations/Azaion.Common/DTO/AnnotationResult.cs
T
Alex Bezdieniezhnykh ae2c62350a remove fix, todo: test
2025-01-03 18:32:56 +02:00

52 lines
1.8 KiB
C#

using System.Windows.Media;
using Azaion.Common.Database;
using Azaion.Common.Extensions;
using Newtonsoft.Json;
namespace Azaion.Common.DTO;
public class AnnotationResult
{
public Annotation Annotation { get; set; }
public string ImagePath { get; set; }
public string TimeStr { get; set; }
public string ClassName { get; set; }
public Color ClassColor0 { get; set; }
public Color ClassColor1 { get; set; }
public Color ClassColor2 { get; set; }
public Color ClassColor3 { get; set; }
public AnnotationResult(Dictionary<int, DetectionClass> allDetectionClasses, Annotation annotation)
{
Annotation = annotation;
var detections = annotation.Detections.ToList();
Color GetAnnotationClass(List<int> detectionClasses, int colorNumber)
{
if (detections.Count == 0)
return (-1).ToColor();
return colorNumber >= detectionClasses.Count
? allDetectionClasses[detectionClasses.LastOrDefault()].Color
: allDetectionClasses[detectionClasses[colorNumber]].Color;
}
TimeStr = $"{annotation.Time:h\\:mm\\:ss}";
ImagePath = annotation.ImagePath;
var detectionClasses = detections.Select(x => x.ClassNumber).Distinct().ToList();
ClassName = detectionClasses.Count > 1
? string.Join(", ", detectionClasses.Select(x => allDetectionClasses[x].ShortName))
: allDetectionClasses[detectionClasses.FirstOrDefault()].Name;
ClassColor0 = GetAnnotationClass(detectionClasses, 0);
ClassColor1 = GetAnnotationClass(detectionClasses, 1);
ClassColor2 = GetAnnotationClass(detectionClasses, 2);
ClassColor3 = GetAnnotationClass(detectionClasses, 3);
}
}