(637967784888423594)-2,042.zip
(637969699845057599)-548.zip
This commit is contained in:
2022-08-24 21:25:03 -07:00
parent 2d9c912ba7
commit 674555b4fc
17 changed files with 184 additions and 230 deletions

View File

@ -222,9 +222,9 @@ public class FaceRecognition : DisposableObject
return results;
}
public List<(Location, FaceEncoding?, Dictionary<FacePart, FacePoint[]>?)> GetCollection(Image image, bool includeFaceEncoding, bool includeFaceParts, bool sortByNormalizedPixelPercentage)
public List<(int, Location, FaceEncoding?, Dictionary<FacePart, FacePoint[]>?)> GetCollection(Image image, bool includeFaceEncoding, bool includeFaceParts, bool sortByNormalizedPixelPercentage)
{
List<(Location, FaceEncoding?, Dictionary<FacePart, FacePoint[]>?)> results = new();
List<(int, Location, FaceEncoding?, Dictionary<FacePart, FacePoint[]>?)> results = new();
if (image is null)
throw new NullReferenceException(nameof(image));
image.ThrowIfDisposed();
@ -235,9 +235,9 @@ public class FaceRecognition : DisposableObject
List<FullObjectDetection> fullObjectDetections = GetFullObjectDetections(image, locations);
if (fullObjectDetections.Count != locations.Count)
throw new Exception();
List<(Location Location, List<FaceEncoding?> FaceEncodings, List<List<(FacePart, FacePoint[])>> FaceParts)> collection = new();
foreach (Location location in locations)
collection.Add(new(location, new(), new()));
List<(int LocationIndex, Location Location, List<FaceEncoding?> FaceEncodings, List<List<(FacePart, FacePoint[])>> FaceParts)> collection = new();
for (int i = 0; i < locations.Count; i++)
collection.Add(new(i, locations[i], new(), new()));
if (locations.Count != collection.Count)
throw new Exception();
if (!includeFaceEncoding)
@ -274,18 +274,18 @@ public class FaceRecognition : DisposableObject
fullObjectDetection.Dispose();
const int indexZero = 0;
Dictionary<FacePart, FacePoint[]> keyValuePairs;
foreach ((Location location, List<FaceEncoding?> faceEncodings, List<List<(FacePart, FacePoint[])>> faceParts) in collection)
foreach ((int locationIndex, Location location, List<FaceEncoding?> faceEncodings, List<List<(FacePart, FacePoint[])>> faceParts) in collection)
{
if (faceEncodings.Count != 1 || faceParts.Count != 1)
continue;
if (!faceParts[indexZero].Any())
results.Add(new(location, faceEncodings[indexZero], null));
results.Add(new(locationIndex, location, faceEncodings[indexZero], null));
else
{
keyValuePairs = new();
foreach ((FacePart facePart, FacePoint[] facePoints) in faceParts[indexZero])
keyValuePairs.Add(facePart, facePoints);
results.Add(new(location, faceEncodings[indexZero], keyValuePairs));
results.Add(new(locationIndex, location, faceEncodings[indexZero], keyValuePairs));
}
}
return results;