Re-Write without checking mapped

This commit is contained in:
2022-09-14 19:00:57 -07:00
parent 73de1070b8
commit ad28ab2d38
70 changed files with 1596 additions and 2342 deletions

View File

@ -413,22 +413,28 @@ public class FaceRecognition : DisposableObject
return null;
}
public static List<double> FaceDistances(IEnumerable<FaceEncoding> faceEncodings, FaceEncoding faceToCompare)
public static List<FaceDistance> FaceDistances(List<FaceDistance> faceDistances, FaceDistance faceDistanceToCompare)
{
List<double>? results = new();
if (faceEncodings is null)
throw new NullReferenceException(nameof(faceEncodings));
if (faceToCompare is null)
throw new NullReferenceException(nameof(faceToCompare));
faceToCompare.ThrowIfDisposed();
FaceEncoding[] array = faceEncodings.ToArray();
if (array.Any(encoding => encoding.IsDisposed))
throw new ObjectDisposedException($"{nameof(faceEncodings)} contains disposed object.");
if (array.Length == 0)
return results;
foreach (FaceEncoding faceEncoding in array)
using (Matrix<double> diff = faceEncoding.Encoding - faceToCompare.Encoding)
results.Add(DlibDotNet.Dlib.Length(diff));
List<FaceDistance> results = new();
if (faceDistances is null)
throw new NullReferenceException(nameof(faceDistances));
if (faceDistances.Count != 0)
{
double length;
FaceDistance result;
if (faceDistanceToCompare is null || faceDistanceToCompare.Encoding is not FaceEncoding faceEncodingToCompare)
throw new NullReferenceException(nameof(faceDistanceToCompare));
faceEncodingToCompare.ThrowIfDisposed();
foreach (FaceDistance faceDistance in faceDistances)
{
if (faceDistance.Encoding is not FaceEncoding faceEncoding || faceEncoding.IsDisposed)
throw new ObjectDisposedException($"{nameof(faceDistances)} contains disposed object.");
using (Matrix<double> diff = faceEncoding.Encoding - faceEncodingToCompare.Encoding)
length = DlibDotNet.Dlib.Length(diff);
result = new(faceDistance, length);
results.Add(result);
}
}
return results;
}