hawkeye camera support(not tested)
This commit is contained in:
@@ -122,4 +122,17 @@ public class AnomalyAI: BaseOperation
|
||||
_modelFilePath.Format = br.ReadString();
|
||||
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
}
|
||||
}
|
||||
@@ -181,4 +181,54 @@ public class ArrayModelMatchingOperation:BaseOperation
|
||||
SearchArea.Load(br);
|
||||
ReloadModelInfo();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ReferenceId)] = ReferenceId.ToString();
|
||||
dict[nameof(Margin)] = Margin;
|
||||
dict[nameof(Amount)] = Amount;
|
||||
dict[nameof(ModelName)] = ModelName;
|
||||
|
||||
// Save ArrayHorizontalElement SearchArea properties manually
|
||||
dict["SearchArea_Editable"] = SearchArea.Editable;
|
||||
dict["SearchArea_LocationX"] = SearchArea.Location.X;
|
||||
dict["SearchArea_LocationY"] = SearchArea.Location.Y;
|
||||
dict["SearchArea_OffsetX"] = SearchArea.Offset.X;
|
||||
dict["SearchArea_OffsetY"] = SearchArea.Offset.Y;
|
||||
dict["SearchArea_BlockSizeX"] = SearchArea.BlockSize.X;
|
||||
dict["SearchArea_BlockSizeY"] = SearchArea.BlockSize.Y;
|
||||
dict["SearchArea_BlockCount"] = SearchArea.BlockCount;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ReferenceId)))
|
||||
ReferenceId = new Guid(dict[nameof(ReferenceId)].ToString());
|
||||
if (dict.ContainsKey(nameof(Margin)))
|
||||
Margin = Convert.ToInt32(dict[nameof(Margin)]);
|
||||
if (dict.ContainsKey(nameof(Amount)))
|
||||
Amount = Convert.ToInt32(dict[nameof(Amount)]);
|
||||
if (dict.ContainsKey(nameof(ModelName)))
|
||||
ModelName = dict[nameof(ModelName)].ToString();
|
||||
|
||||
// Load ArrayHorizontalElement SearchArea properties manually
|
||||
if (dict.ContainsKey("SearchArea_Editable") || dict.ContainsKey("SearchArea_LocationX") || dict.ContainsKey("SearchArea_BlockSizeX"))
|
||||
{
|
||||
SearchArea = new ArrayHorizontalElement();
|
||||
if (dict.ContainsKey("SearchArea_Editable"))
|
||||
SearchArea.Editable = Convert.ToBoolean(dict["SearchArea_Editable"]);
|
||||
if (dict.ContainsKey("SearchArea_LocationX") && dict.ContainsKey("SearchArea_LocationY"))
|
||||
SearchArea.Location = new Vector2(Convert.ToSingle(dict["SearchArea_LocationX"]), Convert.ToSingle(dict["SearchArea_LocationY"]));
|
||||
if (dict.ContainsKey("SearchArea_OffsetX") && dict.ContainsKey("SearchArea_OffsetY"))
|
||||
SearchArea.Offset = new Vector2(Convert.ToSingle(dict["SearchArea_OffsetX"]), Convert.ToSingle(dict["SearchArea_OffsetY"]));
|
||||
if (dict.ContainsKey("SearchArea_BlockSizeX") && dict.ContainsKey("SearchArea_BlockSizeY"))
|
||||
SearchArea.BlockSize = new Vector2(Convert.ToSingle(dict["SearchArea_BlockSizeX"]), Convert.ToSingle(dict["SearchArea_BlockSizeY"]));
|
||||
if (dict.ContainsKey("SearchArea_BlockCount"))
|
||||
SearchArea.BlockCount = Convert.ToInt32(dict["SearchArea_BlockCount"]);
|
||||
}
|
||||
|
||||
ReloadModelInfo();
|
||||
}
|
||||
}
|
||||
@@ -120,5 +120,18 @@ public class BackgroundSeparationModelOperation:BaseOperation,IHaveOrigin
|
||||
ModelName = br.ReadString();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ModelName)] = ModelName;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ModelName)))
|
||||
ModelName = dict[nameof(ModelName)].ToString();
|
||||
}
|
||||
|
||||
public OriginElement Origin { get; set; }
|
||||
}
|
||||
@@ -30,4 +30,20 @@ public class Color128BinaryOperation:ColorAIOperation
|
||||
FilterClasses = br.ReadString();
|
||||
ModelFilePath.Path = br.ReadString();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(FilterClasses)] = FilterClasses;
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(FilterClasses)))
|
||||
FilterClasses = dict[nameof(FilterClasses)].ToString();
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
}
|
||||
}
|
||||
@@ -110,4 +110,20 @@ public class Color128HalfOperation:BaseOperation
|
||||
FilterClasses = br.ReadString();
|
||||
ModelFilePath.Path = br.ReadString();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(FilterClasses)] = FilterClasses;
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(FilterClasses)))
|
||||
FilterClasses = dict[nameof(FilterClasses)].ToString();
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
}
|
||||
}
|
||||
@@ -33,4 +33,20 @@ public class Color128SimpleOperation: ColorAIOperation
|
||||
FilterClasses = br.ReadString();
|
||||
ModelFilePath.Path = br.ReadString();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(FilterClasses)] = FilterClasses;
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(FilterClasses)))
|
||||
FilterClasses = dict[nameof(FilterClasses)].ToString();
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
}
|
||||
}
|
||||
@@ -39,4 +39,27 @@ public class ColorModelOperation : ColorAIOperation
|
||||
var absPath = Path.GetFullPath(Path.Combine(dir, ModelFilePath.Path));
|
||||
ModelFilePath.Path = absPath;
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(FilterClasses)] = FilterClasses;
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(FilterClasses)))
|
||||
FilterClasses = dict[nameof(FilterClasses)].ToString();
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
{
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
// get current directory
|
||||
var dir = Directory.GetCurrentDirectory();
|
||||
// get absolute path
|
||||
var absPath = Path.GetFullPath(Path.Combine(dir, ModelFilePath.Path));
|
||||
ModelFilePath.Path = absPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -156,4 +156,23 @@ public class ModelAIOperation: BaseOperation
|
||||
FilterClasses = br.ReadString();
|
||||
IsCategorical = br.ReadBoolean();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
dict[nameof(FilterClasses)] = FilterClasses;
|
||||
dict[nameof(IsCategorical)] = IsCategorical;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
if (dict.ContainsKey(nameof(FilterClasses)))
|
||||
FilterClasses = dict[nameof(FilterClasses)].ToString();
|
||||
if (dict.ContainsKey(nameof(IsCategorical)))
|
||||
IsCategorical = Convert.ToBoolean(dict[nameof(IsCategorical)]);
|
||||
}
|
||||
}
|
||||
@@ -145,4 +145,17 @@ public class MultichannelAI: BaseOperation
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
}
|
||||
}
|
||||
@@ -147,4 +147,23 @@ public class RawModelAIOperation: BaseOperation
|
||||
FilterClasses = br.ReadString();
|
||||
IsCategorical = br.ReadBoolean();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
dict[nameof(FilterClasses)] = FilterClasses;
|
||||
dict[nameof(IsCategorical)] = IsCategorical;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
if (dict.ContainsKey(nameof(FilterClasses)))
|
||||
FilterClasses = dict[nameof(FilterClasses)].ToString();
|
||||
if (dict.ContainsKey(nameof(IsCategorical)))
|
||||
IsCategorical = Convert.ToBoolean(dict[nameof(IsCategorical)]);
|
||||
}
|
||||
}
|
||||
@@ -139,4 +139,17 @@ public class YoloDetectionOperation:BaseOperation
|
||||
base.Load(br);
|
||||
ModelFilePath.Path = br.ReadString();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(ModelFilePath)] = ModelFilePath.Path;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(ModelFilePath)))
|
||||
ModelFilePath.Path = dict[nameof(ModelFilePath)].ToString();
|
||||
}
|
||||
}
|
||||
@@ -112,4 +112,38 @@ public class YoloPickDetected:BaseOperation
|
||||
MinArea = br.ReadInt32();
|
||||
MaxArea = br.ReadInt32();
|
||||
}
|
||||
|
||||
public override void Save(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Save(dict);
|
||||
dict[nameof(SlotName)] = SlotName;
|
||||
dict[nameof(TypeId)] = TypeId;
|
||||
dict[nameof(MinWidth)] = MinWidth;
|
||||
dict[nameof(MaxWidth)] = MaxWidth;
|
||||
dict[nameof(MinHeight)] = MinHeight;
|
||||
dict[nameof(MaxHeight)] = MaxHeight;
|
||||
dict[nameof(MinArea)] = MinArea;
|
||||
dict[nameof(MaxArea)] = MaxArea;
|
||||
}
|
||||
|
||||
public override void Load(Dictionary<string, object> dict)
|
||||
{
|
||||
base.Load(dict);
|
||||
if (dict.ContainsKey(nameof(SlotName)))
|
||||
SlotName = dict[nameof(SlotName)].ToString();
|
||||
if (dict.ContainsKey(nameof(TypeId)))
|
||||
TypeId = Convert.ToInt32(dict[nameof(TypeId)]);
|
||||
if (dict.ContainsKey(nameof(MinWidth)))
|
||||
MinWidth = Convert.ToInt32(dict[nameof(MinWidth)]);
|
||||
if (dict.ContainsKey(nameof(MaxWidth)))
|
||||
MaxWidth = Convert.ToInt32(dict[nameof(MaxWidth)]);
|
||||
if (dict.ContainsKey(nameof(MinHeight)))
|
||||
MinHeight = Convert.ToInt32(dict[nameof(MinHeight)]);
|
||||
if (dict.ContainsKey(nameof(MaxHeight)))
|
||||
MaxHeight = Convert.ToInt32(dict[nameof(MaxHeight)]);
|
||||
if (dict.ContainsKey(nameof(MinArea)))
|
||||
MinArea = Convert.ToInt32(dict[nameof(MinArea)]);
|
||||
if (dict.ContainsKey(nameof(MaxArea)))
|
||||
MaxArea = Convert.ToInt32(dict[nameof(MaxArea)]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user