MapFaceFileLogic
Author:
This commit is contained in:
@ -412,16 +412,42 @@ public class FaceRecognition : DisposableObject
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ReadOnlyCollection<LocationContainer> GetLocationContainers(int permyriad, ReadOnlyCollection<LocationContainer> readOnlyLocationContainers, LocationContainer locationContainer)
|
||||
{
|
||||
List<LocationContainer> results = [];
|
||||
int lengthPermyriad;
|
||||
if (readOnlyLocationContainers.Count != 0)
|
||||
{
|
||||
double length;
|
||||
LocationContainer result;
|
||||
if (locationContainer.Encoding is not FaceEncoding faceEncodingToCompare)
|
||||
throw new NullReferenceException(nameof(locationContainer));
|
||||
faceEncodingToCompare.ThrowIfDisposed();
|
||||
foreach (LocationContainer item in readOnlyLocationContainers)
|
||||
{
|
||||
#pragma warning disable CA1513
|
||||
if (item.Encoding is not FaceEncoding faceEncoding || faceEncoding.IsDisposed)
|
||||
throw new ObjectDisposedException($"{nameof(item)} contains disposed object.");
|
||||
#pragma warning restore CA1513
|
||||
using (Matrix<double> diff = faceEncoding.Encoding - faceEncodingToCompare.Encoding)
|
||||
length = DlibDotNet.Dlib.Length(diff);
|
||||
lengthPermyriad = (int)(length * permyriad);
|
||||
result = LocationContainer.Get(locationContainer, item, lengthPermyriad, keepExifDirectory: false, keepEncoding: false);
|
||||
results.Add(result);
|
||||
}
|
||||
}
|
||||
LocationContainer[] array = results.OrderBy(l => l.LengthPermyriad).ToArray();
|
||||
return new(array);
|
||||
}
|
||||
|
||||
public static List<FaceDistance> FaceDistances(ReadOnlyCollection<FaceDistance> faceDistances, FaceDistance faceDistanceToCompare)
|
||||
{
|
||||
List<FaceDistance> results = [];
|
||||
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)
|
||||
if (faceDistanceToCompare.Encoding is not FaceEncoding faceEncodingToCompare)
|
||||
throw new NullReferenceException(nameof(faceDistanceToCompare));
|
||||
faceEncodingToCompare.ThrowIfDisposed();
|
||||
foreach (FaceDistance faceDistance in faceDistances)
|
||||
|
Reference in New Issue
Block a user