private RawIdentifyResults IdentifyFaces() { RawIdentifyResults rawIdentifyResults = new RawIdentifyResults(); List <CompareResult> list = new List <CompareResult>(); FrameInfo result; while (this._frames.TryDequeue(out result)) { try { CompareResult[] recommendedList = this._engineWorker.GetRecommendedList(result); if (recommendedList.Length == 0) { if (this._device.SaveUnidentified) { rawIdentifyResults.LastUnKnown = result; } } else { list.AddRange((IEnumerable <CompareResult>)recommendedList); result.Device.IdentifierCount += recommendedList.Length; } } catch (Exception ex) { this._logger.Error((object)" IdentifyFaces Error ", ex); ++result.Device.VerificationErrors; } } rawIdentifyResults.Known = CompareRequest.GroupKnown((IEnumerable <CompareResult>)list); return(rawIdentifyResults); }
private void Save(RawIdentifyResults results) { this.SaveResults((IEnumerable <CompareResult>)results.Known); if (!this._device.SaveUnidentified || results.UnKnownCount < Settings.Default.MinFaceCount) { return; } this.SaveLog(CompareRequest.FrameToLogBcLog(results.LastUnKnown)); }
public async void ProcessAfter(int trackingPeriod) { try { await Task.Delay(trackingPeriod).ConfigureAwait(false); this.RequestStatus = RequestStatus.Search; RawIdentifyResults results = this.IdentifyFaces(); this.Save(results); } catch (Exception ex) { this._logger.Error((object)"Identify Task process error", ex); } finally { this.RequestStatus = RequestStatus.Complete; } }