123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using Assets.StreetLight.Interfaces;
- using Assets.StreetLight.Poco;
- using Assets.StreetLight.Serialization;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- 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;
- }
- 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(p.id, null)
- {
- WorldPosition = new Vector3(position.x, position.y, position.z)
- };
- 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);
- }
- }
- }
- }
- }
|