12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using Assets.StreetLight.Interfaces;
- using Assets.StreetLight.Poco;
- using Assets.StreetLight.Serialization;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Serialization;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using UnityEngine;
- namespace Assets.StreetLight.Adapters
- {
- internal class ZedPersonDetector : IPersonDetector
- {
- private readonly ZEDManager zedManager;
- public event EventHandler<IEnumerable<Person>> PersonsDetected;
- public ZedPersonDetector(ZEDManager zedManager)
- {
- this.zedManager = zedManager;
- zedManager.OnObjectDetection += ZedManager_OnObjectDetection;
- zedManager.OnZEDReady += ZedManager_OnZEDReady;
- zedManager.objectDetectionModel = sl.DETECTION_MODEL.HUMAN_BODY_ACCURATE;
- zedManager.enableTracking = true;
- }
- private void ZedManager_OnZEDReady()
- {
- zedManager.StartObjectDetection();
- }
- private void ZedManager_OnObjectDetection(DetectionFrame detectionFrame)
- {
- var detectedObjects = detectionFrame.GetFilteredObjectList(true, true, false);
- var persons = detectedObjects.Where(d => d.objectClass == sl.OBJECT_CLASS.PERSON);
- var detectedPersons = from p in persons
- let position = p.Get3DWorldPosition()
- select new Person
- {
- Id = p.id,
- GroundPosition = new Vector3(position.x, position.y, 0)
- };
- PersonsDetected?.Invoke(this, detectedPersons.ToList());
- }
- private void WriteDetectionFrameToJson(DetectionFrame objFrame)
- {
- var errors = new List<string>();
- JsonSerializerSettings settings = new()
- {
- Converters = new List<JsonConverter>() {
- new Vector2Converter(),
- new Vector3Converter(),
- new QuaternionConverter(),
- new ColorConverter(),
- new Matrix4x4Converter()
- },
- Error = (s, a) =>
- {
- if (a.CurrentObject != null)
- {
- errors.Add(a.ErrorContext.Error.Message);
- }
- a.ErrorContext.Handled = true;
- },
- //TraceWriter = new TraceWriter()
- };
- var serializer = JsonSerializer.Create(settings);
- using (var file = File.CreateText(@$"C:\Users\nick.steyer\SmartStreetLight\{DateTime.Now:HH-mm-ss-fff}.json"))
- {
- try
- {
- serializer.Serialize(file, objFrame);
- }
- catch (Exception ex)
- {
- Debug.Log(ex.Message);
- Debug.Log(ex.StackTrace);
- }
- }
- }
- }
- }
|