170 lines
5.0 KiB
C#
170 lines
5.0 KiB
C#
using AgroBase.Models.Operadores;
|
|
using AgroBase.Services.Operadores;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Threading.Tasks;
|
|
using static AgroBase.Models.Enums;
|
|
|
|
namespace AgroBase.Models
|
|
{
|
|
public class OAKCameraModel
|
|
{
|
|
public T_Code Dispositivo { get; set; }
|
|
public int Index { get; set; }
|
|
public string Id { get; set; }
|
|
public string Name { get; set; }
|
|
public string Description
|
|
{
|
|
get
|
|
{
|
|
return $"({Index}) {Name ?? Id}";
|
|
}
|
|
}
|
|
public string State { get; set; }
|
|
public string Usb_Speed { get; set; }
|
|
public string[] Available_Camera_Sensors { get; set; }
|
|
public string Version { get; set; }
|
|
public OAKCameraMemoryUsageModel Memory_Usage { get; set; }
|
|
public OAKCameraTemperaturaModel Temperature { get; set; }
|
|
public string Bootloader_Version { get; set; }
|
|
public bool Is_Pipeline_Running { get; set; }
|
|
public double fx { get; set; }
|
|
public double baseline { get; set; }
|
|
|
|
public double DistanciaMaximaVisao { get; set; } = 5000;
|
|
public double DistanciaMinimaVisao { get; set; } = 500;
|
|
public double PercentualAlturaSolo { get; set; } = 30;
|
|
|
|
public Dictionary<TipoFrameCamera, OAKCameraFrameModel> frames
|
|
{
|
|
get
|
|
{
|
|
switch (Dispositivo)
|
|
{
|
|
case T_Code.Snr:
|
|
return VisualWorkerService.DadosLeitura.CameraFrames;
|
|
case T_Code.Cam:
|
|
return WeedWorkerService.DadosLeitura.CameraFrames;
|
|
default:
|
|
return new Dictionary<TipoFrameCamera, OAKCameraFrameModel>();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public async Task<Bitmap> GetNewFrame(TipoFrameCamera tipo = TipoFrameCamera.Rgb)
|
|
{
|
|
OAKCameraFrameModel frame = null;
|
|
switch (Dispositivo)
|
|
{
|
|
case T_Code.Snr:
|
|
frame = await VisualWorkerService.GetCameraFrame(tipo);
|
|
break;
|
|
case T_Code.Cam:
|
|
frame = await WeedWorkerService.GetCameraFrame(tipo);
|
|
break;
|
|
}
|
|
Bitmap bmp = frame?.image();
|
|
return bmp;
|
|
}
|
|
|
|
public void SaveFrames(List<TipoFrameCamera> frames, string nome, string caminho)
|
|
{
|
|
switch (Dispositivo)
|
|
{
|
|
case T_Code.Snr:
|
|
VisualWorkerService.SaveCameraFrames(frames, nome, caminho);
|
|
break;
|
|
case T_Code.Cam:
|
|
WeedWorkerService.SaveCameraFrames(frames, nome, caminho);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public OAKCameraModel Clone()
|
|
{
|
|
return new OAKCameraModel()
|
|
{
|
|
Dispositivo = Dispositivo,
|
|
Index = Index,
|
|
Id = Id,
|
|
Name = Name,
|
|
State = State,
|
|
Usb_Speed = Usb_Speed,
|
|
Available_Camera_Sensors = Available_Camera_Sensors,
|
|
Bootloader_Version = Bootloader_Version,
|
|
Is_Pipeline_Running = Is_Pipeline_Running,
|
|
Memory_Usage = Memory_Usage?.Clone(),
|
|
Temperature = Temperature?.Clone(),
|
|
Version = Version,
|
|
fx = fx,
|
|
baseline = baseline,
|
|
};
|
|
}
|
|
}
|
|
|
|
public class OAKCameraMemoryUsageModel
|
|
{
|
|
public double Remaining { get; set; }
|
|
public double Total { get; set; }
|
|
public double Used { get; set; }
|
|
public double Percent
|
|
{
|
|
get
|
|
{
|
|
return Math.Round((Used / Total) * 100, 2);
|
|
}
|
|
}
|
|
|
|
public OAKCameraMemoryUsageModel Clone()
|
|
{
|
|
return new OAKCameraMemoryUsageModel()
|
|
{
|
|
Remaining = Remaining,
|
|
Total = Total,
|
|
Used = Used
|
|
};
|
|
}
|
|
}
|
|
|
|
public class OAKCameraTemperaturaModel
|
|
{
|
|
public double css { get; set; }
|
|
public double mss { get; set; }
|
|
public double upa { get; set; }
|
|
public double dss { get; set; }
|
|
|
|
public OAKCameraTemperaturaModel Clone()
|
|
{
|
|
return new OAKCameraTemperaturaModel()
|
|
{
|
|
css = css,
|
|
mss = mss,
|
|
upa = upa,
|
|
dss = dss
|
|
};
|
|
}
|
|
}
|
|
|
|
public class OAKCameraFrameModel
|
|
{
|
|
public DateTime timestamp { get; set; } = DateTime.MinValue;
|
|
public string frame { get; set; }
|
|
public Bitmap image()
|
|
{
|
|
return FuncoesGlobais.Base64ToBitmap(frame);
|
|
}
|
|
|
|
public OAKCameraFrameModel Clone()
|
|
{
|
|
return new OAKCameraFrameModel()
|
|
{
|
|
timestamp = timestamp,
|
|
frame = frame
|
|
};
|
|
}
|
|
}
|
|
|
|
}
|