GetJLinkDirectories, IsFocusPerson and start of
ignoreXMatches
This commit is contained in:
@ -380,18 +380,28 @@ public partial class E_Distance
|
||||
|
||||
public static void SetFaceDistances(int maxDegreeOfParallelism, long ticks, List<Face> distinctFilteredFaces)
|
||||
{
|
||||
List<Face> faces = new();
|
||||
foreach (Face face in distinctFilteredFaces)
|
||||
{
|
||||
if (face.Mapping?.MappingFromFilter is null)
|
||||
throw new NotSupportedException();
|
||||
if (face.Mapping.MappingFromFilter.IsFocusPerson is not null && !face.Mapping.MappingFromFilter.IsFocusPerson.Value)
|
||||
continue;
|
||||
if (face.FaceEncoding is not null && face.FaceDistance?.Encoding is not null && face.FaceDistance.Encoding is FaceRecognitionDotNet.FaceEncoding _)
|
||||
continue;
|
||||
faces.Add(face);
|
||||
}
|
||||
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = maxDegreeOfParallelism };
|
||||
string message = $") {distinctFilteredFaces.Count:000} Load Face Encoding - {totalSeconds} total second(s)";
|
||||
string message = $") {faces.Count:000} Load Face Encoding - {totalSeconds} total second(s)";
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
using ProgressBar progressBar = new(distinctFilteredFaces.Count, message, options);
|
||||
_ = Parallel.For(0, distinctFilteredFaces.Count, parallelOptions, (i, state) =>
|
||||
using ProgressBar progressBar = new(faces.Count, message, options);
|
||||
_ = Parallel.For(0, faces.Count, parallelOptions, (i, state) =>
|
||||
{
|
||||
Face face = distinctFilteredFaces[i];
|
||||
Face face = faces[i];
|
||||
FaceRecognitionDotNet.FaceEncoding faceEncoding;
|
||||
if (face.FaceEncoding is null || face.Mapping?.MappingFromLocation is null)
|
||||
throw new NotSupportedException();
|
||||
if (face.FaceDistance?.Encoding is not null && face.FaceDistance.Encoding is FaceRecognitionDotNet.FaceEncoding faceEncoding)
|
||||
return;
|
||||
progressBar.Tick();
|
||||
faceEncoding = FaceRecognition.LoadFaceEncoding(face.FaceEncoding.RawEncoding);
|
||||
FaceDistance faceDistance = new(face.Mapping.MappingFromLocation.ConfidencePercent, face.Mapping.MappingFromItem.GetDateTimeOriginalThenMinimumDateTime(), faceEncoding, face.Mapping.MappingFromItem.Id, face.Mapping.MappingFromItem.IsWrongYear, face.Mapping.MappingFromLocation.WholePercentages);
|
||||
@ -490,14 +500,16 @@ public partial class E_Distance
|
||||
continue;
|
||||
if (faceDistanceContainer.Face.Mapping.MappingFromLocation.AreaPermyriad < distanceLimits.FaceAreaPermyriad)
|
||||
continue;
|
||||
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsUsed is not null && faceDistanceContainer.Face.Mapping.MappingFromFilter.IsUsed.Value)
|
||||
continue;
|
||||
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusPerson is not null && !faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusPerson.Value)
|
||||
continue;
|
||||
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusModel is not null && !faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusModel.Value)
|
||||
continue;
|
||||
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusRelativePath is not null && !faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusRelativePath.Value)
|
||||
continue;
|
||||
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsIgnoreRelativePath is not null && faceDistanceContainer.Face.Mapping.MappingFromFilter.IsIgnoreRelativePath.Value)
|
||||
continue;
|
||||
if (mapLogic.Used(faceDistanceContainer.FaceDistance))
|
||||
continue;
|
||||
results.Add(faceDistanceContainer);
|
||||
}
|
||||
return results.ToArray();
|
||||
|
Reference in New Issue
Block a user