C# APIs.
To use the engines, Linked together the library 'EvoCSAPI.dll'. For its path, refer to SDK contents.
Example for Snapshot Engine
using System;
using System.Text;
using System.Drawing;
using System.Diagnostics;
namespace SampleSSE
{
using EvoRC = System.Int32;
class Program
{
static void Main(string[] args)
{
string dataDir = null;
string imgPath = null;
if (args.Length < 1)
{
Console.WriteLine("Usage: SampleSSE [sdk_data_dir] image_file");
return;
}
else if (args.Length == 1)
{
imgPath = args[1];
}
else
{
dataDir = args[0];
imgPath = args[1];
}
rc = Evo.Func.Initialize(null, dataDir, out idDDI);
Debug.Assert(rc == 0);
uint numDev;
rc = Evo.DDI.GetNumDev(idDDI, out numDev);
Debug.Assert(rc == 0);
Console.WriteLine("<< DNN Device Information >>");
for (uint i = 0; i < numDev; i++)
{
StringBuilder buf = new StringBuilder(128);
rc = Evo.DDI.SelectDev(idDDI, i);
Debug.Assert(rc == 0);
rc = Evo.DDI.GetDevID(idDDI, buf);
Debug.Assert(rc == 0);
Console.WriteLine(" ID: " + buf);
rc = Evo.DDI.GetFullName(idDDI, buf);
Debug.Assert(rc == 0);
Console.WriteLine(" Full Name: " + buf);
if (i < (numDev - 1))
Console.WriteLine("-----------------------------------------");
}
Console.WriteLine();
Evo.Func.FreeObj(ref idDDI);
idSSE = Evo.SSEngine.Create();
Debug.Assert(idSSE >= 0);
rc = Evo.SSEngine.Init(idSSE, "KOR", null);
Debug.Assert(rc == 0);
Evo.Rect searchRect = new Evo.Rect();
rc = Evo.Engine.GetParamSearchRect(idSSE, out searchRect);
Debug.Assert(rc == 0);
searchRect.width = 0;
searchRect.height = 0;
rc = Evo.Engine.SetParamSearchRect(idSSE, in searchRect);
Debug.Assert(rc == 0);
idLPI = Evo.SSEngine.Run(idSSE, imgPath);
rc = Evo.Func.GetLastRC();
Debug.Assert(rc == 0);
if (idLPI >= 0)
{
uint num;
rc = Evo.LPI.GetNumLP(idLPI, out num);
Debug.Assert(rc == 0);
for (uint i = 0; i < num; i++)
{
Evo.Rect bbox;
int type;
uint len;
float confidence;
float[] bufCC = new float[20];
StringBuilder bufStr = new StringBuilder(512);
rc = Evo.LPI.SelectLP(idLPI, i);
Debug.Assert(rc == 0);
rc = Evo.LPI.GetStr(idLPI, bufStr);
Debug.Assert(rc == 0);
Console.WriteLine("\n{0}", bufStr.ToString());
len = (uint)bufCC.Length;
rc = Evo.LPI.GetCharConf(idLPI, bufCC, ref len);
Debug.Assert(rc == 0);
Console.Write(" --> Char Confidences: ");
for (uint j = 0; j < len; j++)
Console.Write("{0}% ", bufCC[j]);
Console.WriteLine();
rc = Evo.LPI.GetPos(idLPI, out bbox);
Debug.Assert(rc == 0);
Console.WriteLine(" --> Position: {0}, {1}, {2}, {3}", bbox.x, bbox.y, bbox.width, bbox.height);
rc = Evo.LPI.GetType(idLPI, out type, out confidence);
Debug.Assert(rc == 0);
Console.WriteLine(" --> Type: {0} ({1}%)", type, confidence);
}
Evo.Func.FreeObj(ref idLPI);
Debug.Assert(idLPI < 0);
}
Evo.SSEngine.Deinit(idSSE);
Evo.Func.FreeObj(ref idSSE);
Debug.Assert(idSSE < 0);
}
}
}
EvoRC
Return Codes.
Definition Basic.h:59
int EvoObjID
Definition C_API.h:25
Evo Engine's topmost namespace
Definition CamCalib.hpp:27
Example for Triggered Snapshot Engine
using System;
using System.Text;
using System.Timers;
using System.Drawing;
using System.Threading;
using System.Diagnostics;
namespace SampleTSSE
{
using EvoRC = System.Int32;
class Program
{
private static System.Timers.Timer timer;
private static string imgDir = null;
private static void OnTimerHandler(Object source, ElapsedEventArgs e)
{
long time;
rc =
Evo.Func.GetLastRC();
if (rc != 0)
{
Debug.Assert(idLPI < 0 && idPic < 0);
if (rc == 60)
{
Console.WriteLine("The video stream closed.");
return;
}
else
{
Debug.Assert(false);
}
}
if (idLPI >= 0)
{
uint numLPs;
rc = Evo.LPI.GetNumLP(idLPI, out numLPs);
Debug.Assert(rc == 0);
for (uint i = 0; i < numLPs; i++)
{
Evo.Rect bbox;
int type;
float confidence;
StringBuilder buf = new StringBuilder(512);
rc = Evo.LPI.SelectLP(idLPI, i);
Debug.Assert(rc == 0);
rc = Evo.LPI.GetStr(idLPI, buf);
Debug.Assert(rc == 0);
Console.WriteLine("\n{0}", buf.ToString());
rc = Evo.LPI.GetPos(idLPI, out bbox);
Debug.Assert(rc == 0);
Console.WriteLine(" --> Position: {0}, {1}, {2}, {3}", bbox.x, bbox.y, bbox.width, bbox.height);
rc = Evo.LPI.GetType(idLPI, out type, out confidence);
Debug.Assert(rc == 0);
Console.WriteLine(" --> Type: {0} ({1}%)", type, confidence);
}
Evo.Func.FreeObj(ref idLPI);
Debug.Assert(idLPI < 0);
}
Debug.Assert(rc == 0);
rc = Evo.Picture.SaveInJPEG(idPic, imgDir + String.Format("\\{0}.jpg", time));
Debug.Assert(rc == 0);
Evo.Func.FreeObj(ref idPic);
Debug.Assert(idPic < 0);
}
static void Main(string[] args)
{
string dataDir = null;
string url = null;
if (args.Length < 2)
{
Console.WriteLine("Usage: SampleTSSE [sdk_data_dir] video_source_url image_dir");
return;
}
else if (args.Length == 2)
{
url = args[0];
imgDir = args[1];
}
else
{
dataDir = args[0];
url = args[1];
imgDir = args[2];
}
int rc;
rc = Evo.Func.Initialize(null, dataDir, out idDDI);
Debug.Assert(rc == 0 && idDDI >= 0);
uint numDev;
rc = Evo.DDI.GetNumDev(idDDI, out numDev);
Debug.Assert(rc == 0);
Console.WriteLine("<< DNN Device Information >>");
for (uint i = 0; i < numDev; i++)
{
StringBuilder buf = new StringBuilder(128);
rc = Evo.DDI.SelectDev(idDDI, i);
Debug.Assert(rc == 0);
rc = Evo.DDI.GetDevID(idDDI, buf);
Debug.Assert(rc == 0);
Console.WriteLine(" ID: " + buf);
rc = Evo.DDI.GetFullName(idDDI, buf);
Debug.Assert(rc == 0);
Console.WriteLine(" Full Name: " + buf);
if (i < (numDev - 1))
Console.WriteLine("-----------------------------------------");
}
Console.WriteLine();
Evo.Func.FreeObj(ref idDDI);
Debug.Assert(idDDI < 0);
idTSSE = Evo.TSSEngine.Create();
Debug.Assert(idTSSE >= 0);
rc = Evo.TSSEngine.Init(idTSSE, "KOR", null, url);
Debug.Assert(rc == 0);
Evo.Rect searchRect = new Evo.Rect();
rc = Evo.Engine.GetParamSearchRect(idTSSE, out searchRect);
Debug.Assert(rc == 0);
searchRect.width = 0;
searchRect.height = 0;
rc = Evo.Engine.SetParamSearchRect(idTSSE, in searchRect);
Debug.Assert(rc == 0);
int total = 5;
timer = new System.Timers.Timer(1000);
timer.Elapsed += OnTimerHandler;
timer.AutoReset = true;
timer.Enabled = true;
for (int num = 0; num < total; num++)
{
Thread.Sleep(1000);
}
timer.Enabled = false;
Thread.Sleep(1500);
Evo.TSSEngine.Deinit(idTSSE);
Evo.Func.FreeObj(ref idTSSE);
Debug.Assert(idTSSE < 0);
}
}
}
Picture class
Definition Picture.hpp:19
virtual int64_t GetTime(EvoTimeUnit unit=EVOTU_MS) const =0
Triggered Snapshot Engine class.
Definition TSSEngine.hpp:33
virtual LPI::Ptr Trigger(Picture::Ptr &pic, EvoMS *mstg=NULL)=0
Example for Fully Automatic Video Engine
using System;
using System.Text;
using System.Timers;
using System.Drawing;
using System.Threading;
using System.Diagnostics;
namespace SampleFAVE
{
using EvoRC = System.Int32;
class Program
{
private static string imgDir = null;
{
uint numLPs;
Debug.Assert(rc == 0 && numLPs == 1);
int type;
uint numPic;
int heading;
float confidence;
StringBuilder buf = new StringBuilder(512);
Debug.Assert(rc == 0);
Console.WriteLine("String: {0}", buf.ToString());
Debug.Assert(rc == 0);
Console.WriteLine("Type: {0} ({1}%)", type, confidence);
Debug.Assert(rc == 0);
for (uint i = 0; i < numPic; i++)
{
long time;
Evo.Rect bbox;
DateTimeOffset date;
Debug.Assert(rc == 0);
rc =
Evo.
GOP.GetPos(idGOP, out bbox);
Debug.Assert(rc == 0);
Console.WriteLine("Position: {0}, {1}, {2}, {3}", bbox.x, bbox.y, bbox.width, bbox.height);
Debug.Assert(rc == 0);
date = DateTimeOffset.FromUnixTimeMilliseconds(time).ToLocalTime();
Console.WriteLine(date.ToString());
}
Console.WriteLine("Heading Direction: {0}", heading);
Console.WriteLine();
if (numPic < 2)
else
Debug.Assert(rc == 0);
}
public class GenICam
{
public GenICam()
{
idAdmin = -1;
idDev = -1;
}
}
static void Main(string[] args)
{
string viType;
string dataDir = null;
string url = "F:\\Temp1\\2014-11-24_.mkv";
GenICam gic = new GenICam();
if (args.Length < 2)
{
Console.WriteLine("Usage: SampleFAVE [SDK_Data_Dir] Video_Input_Type Image_Dir");
return;
}
else if (args.Length == 2)
{
viType = args[0];
imgDir = args[1];
}
else
{
dataDir = args[0];
viType = args[1];
imgDir = args[2];
}
rc = Evo.Func.Initialize(null, dataDir, out idDDI);
Debug.Assert(rc == 0 && idDDI >= 0);
uint numDev;
rc = Evo.DDI.GetNumDev(idDDI, out numDev);
Debug.Assert(rc == 0);
Console.WriteLine("<< DNN Device Information >>");
for (uint i = 0; i < numDev; i++)
{
StringBuilder buf = new StringBuilder(128);
rc = Evo.DDI.SelectDev(idDDI, i);
Debug.Assert(rc == 0);
rc = Evo.DDI.GetDevID(idDDI, buf);
Debug.Assert(rc == 0);
Console.WriteLine(" ID: " + buf);
rc = Evo.DDI.GetFullName(idDDI, buf);
Debug.Assert(rc == 0);
Console.WriteLine(" Full Name: " + buf);
if (i < (numDev - 1))
Console.WriteLine("-----------------------------------------");
}
Console.WriteLine();
Evo.Func.FreeObj(ref idDDI);
Debug.Assert(idDDI < 0);
if (viType == "GenICam")
{
gic.idAdmin = Evo.GIC.Admin.Get();
Debug.Assert(gic.idAdmin >= 0);
rc = Evo.GIC.Admin.UpdateDevList(gic.idAdmin);
Debug.Assert(rc == 0);
rc = Evo.GIC.Admin.GetNumDev(gic.idAdmin, out numDev);
Debug.Assert(rc == 0);
if (numDev <= 0)
{
Evo.Func.FreeObj(ref gic.idAdmin);
Debug.Assert(gic.idAdmin < 0);
return;
}
else
{
uint numDS;
for (uint i = 0; i < numDev; i++)
{
StringBuilder strBuf = new StringBuilder(100);
rc = Evo.GIC.Admin.SelectDev(gic.idAdmin, i);
Debug.Assert(rc == 0);
Console.WriteLine("[Current Device: {0}]", i);
rc = Evo.GIC.Admin.GetDevIfc(gic.idAdmin, strBuf);
Debug.Assert(rc == 0);
Console.WriteLine("Interface: {0}", strBuf.ToString());
rc = Evo.GIC.Admin.GetDevVendor(gic.idAdmin, strBuf);
Debug.Assert(rc == 0);
Console.WriteLine("Vendor: {0}", strBuf.ToString());
rc = Evo.GIC.Admin.GetDevModel(gic.idAdmin, strBuf);
Debug.Assert(rc == 0);
Console.WriteLine("Model: {0}", strBuf.ToString());
rc = Evo.GIC.Admin.GetDevSerialNo(gic.idAdmin, strBuf);
Debug.Assert(rc == 0);
Console.WriteLine("SerialNo: {0}", strBuf.ToString());
rc = Evo.GIC.Admin.GetDevID(gic.idAdmin, strBuf);
Debug.Assert(rc == 0);
Console.WriteLine("ID: {0}", strBuf.ToString());
}
Console.WriteLine();
rc = Evo.GIC.Admin.SelectDev(gic.idAdmin, 0);
Debug.Assert(rc == 0);
gic.idDev = Evo.GIC.Admin.OpenDev(gic.idAdmin);
Debug.Assert(gic.idDev >= 0);
rc = Evo.GIC.Dev.GetNumDataStreams(gic.idDev, out numDS);
Debug.Assert(rc == 0);
if (numDS > 0)
Console.WriteLine("Number of data streams: {0}", numDS);
else
{
Evo.Func.FreeObj(ref gic.idDev);
Evo.Func.FreeObj(ref gic.idAdmin);
Debug.Assert(gic.idDev < 0 && gic.idDev < 0);
return;
}
}
}
idFAVE = Evo.FAVEngine.Create();
Debug.Assert(idFAVE >= 0);
if (viType == "IPProto")
rc = Evo.FAVEngine.Init(idFAVE, "KOR", null, url);
else
rc = Evo.FAVEngine.Init(idFAVE, "KOR", null, gic.idDev, 0);
Debug.Assert(rc == 0);
Evo.Output output = new Evo.Output();
rc = Evo.Engine.GetParamOutput(idFAVE, out output);
Debug.Assert(rc == 0);
output.headDir = 1;
rc = Evo.Engine.SetParamOutput(idFAVE, in output);
Debug.Assert(rc == 0);
rc = Evo.Engine.SetParamGOPSize(idFAVE, 1);
Debug.Assert(rc == 0);
for (int num = 0; num < 3; num++)
{
idLPI = Evo.FAVEngine.PopLPI(idFAVE, out idGOP);
if (idLPI < 0 && idGOP < 0)
{
if (Evo.Func.GetLastRC() == 60)
Console.WriteLine("The video stream closed.");
break;
}
Debug.Assert(idLPI >=0 && idGOP >= 0);
HandleResult(idLPI, idGOP);
Evo.Func.FreeObj(ref idLPI);
Evo.Func.FreeObj(ref idGOP);
Debug.Assert(idLPI < 0 && idGOP < 0);
}
Evo.FAVEngine.Deinit(idFAVE);
Evo.Func.FreeObj(ref idFAVE);
Debug.Assert(idFAVE < 0);
if (viType == "GenICam")
{
Evo.Func.FreeObj(ref gic.idDev);
Evo.Func.FreeObj(ref gic.idAdmin);
Debug.Assert(gic.idDev < 0 && gic.idDev < 0);
}
}
}
}
Goup of Pictures.
Definition FAVEngine.hpp:34
virtual EvoRC SaveAllInTIFF(const char *path, int quality=95) const =0
virtual size_t GetNumPic(void) const =0
virtual EvoHeadDir GetHeadDir(void) const =0
virtual int64_t GetPicTime(EvoTimeUnit unit=EVOTU_MS) const =0
virtual EvoRC SelectPic(size_t idx)=0
virtual EvoRC SavePicInJPEG(const char *path, int quality=95) const =0
License Plate Information class.
Definition Engine.hpp:143
virtual size_t GetNumLP(void) const =0
virtual void GetType(EvoLPT &type, float &confidence) const =0
virtual const char * GetStr(void) const =0
Example for camera calibration
using System;
using System.Text;
using System.Drawing;
using System.Diagnostics;
namespace SampleCamCalib
{
using EvoRC = System.Int32;
class Program
{
static void Main(string[] args)
{
string dataDir = null;
string ccName = null;
string imgPath = null;
if (args.Length < 2)
{
Console.WriteLine("Usage: SampleCamModel [sdk_data_dir] camera_calib_name image_file");
return;
}
else if (args.Length == 2)
{
ccName = args[0];
imgPath = args[1];
}
else
{
dataDir = args[0];
ccName = args[1];
imgPath = args[2];
}
rc = Evo.Func.Initialize("latency", dataDir);
Debug.Assert(rc == 0);
idFisheyeModel = Evo.CC.Fisheye.Create(ccName);
Debug.Assert(idFisheyeModel >= 0);
idSSE = Evo.SSEngine.Create();
Debug.Assert(idSSE >= 0);
rc = Evo.SSEngine.Init(idSSE, "KOR", "FP32:CPU");
Debug.Assert(rc == 0);
Evo.Image img = new Evo.Image();
idPic = Evo.CC.Fisheye.Rectify(idFisheyeModel, imgPath);
Debug.Assert(idPic >= 0);
rc = Evo.Picture.GetImage(idPic, out img);
Debug.Assert(rc == 0);
idLPI = Evo.SSEngine.Run(idSSE, in img);
rc = Evo.Func.GetLastRC();
Debug.Assert(rc == 0);
if (idLPI >= 0)
{
uint num;
rc = Evo.LPI.GetNumLP(idLPI, out num);
Debug.Assert(rc == 0);
for (uint i = 0; i < num; i++)
{
Evo.Rect bbox;
int type;
uint len;
float confidence;
float[] bufCC = new float[20];
StringBuilder strBuf = new StringBuilder(512);
rc = Evo.LPI.SelectLP(idLPI, i);
Debug.Assert(rc == 0);
rc = Evo.LPI.GetStr(idLPI, strBuf);
Debug.Assert(rc == 0);
Console.WriteLine("\n{0}", strBuf.ToString());
len = (uint)bufCC.Length;
rc = Evo.LPI.GetCharConf(idLPI, bufCC, ref len);
Debug.Assert(rc == 0);
Console.Write(" --> Char Confidences: ");
for (uint j = 0; j < len; j++)
Console.Write("{0}% ", bufCC[j]);
Console.WriteLine();
rc = Evo.LPI.GetPos(idLPI, out bbox);
Debug.Assert(rc == 0);
Console.WriteLine(" --> Position: {0}, {1}, {2}, {3}", bbox.x, bbox.y, bbox.width, bbox.height);
rc = Evo.LPI.GetType(idLPI, out type, out confidence);
Debug.Assert(rc == 0);
Console.WriteLine(" --> Type: {0} ({1}%)", type, confidence);
}
Evo.Func.FreeObj(ref idLPI);
Debug.Assert(idLPI < 0);
}
rc = Evo.Picture.SaveInJPEG(idPic, "rectified_image.jpg");
Debug.Assert(rc == 0);
Evo.Func.FreeObj(ref idPic);
Debug.Assert(idPic < 0);
Evo.SSEngine.Deinit(idSSE);
Evo.Func.FreeObj(ref idSSE);
Debug.Assert(idSSE < 0);
Evo.Func.FreeObj(ref idFisheyeModel);
Debug.Assert(idFisheyeModel < 0);
}
}
}