aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2024-08-29 15:40:27 -0400
committerbobzel <zzzman@gmail.com>2024-08-29 15:40:27 -0400
commitc26be511545d4570f3adcc15ecefae78e3d396df (patch)
tree446ce65a3f19abf7f8befb280ff2af741b3e37bc /src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx
parent538704d7ecaf0e2b13831547f047ed9acf5b8746 (diff)
parent9776e4584b61d3c67622d8ea1f2338a7dfbe857d (diff)
Merge branch 'master' into eleanor-gptdraw
Diffstat (limited to 'src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx')
-rw-r--r--src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx
index c62303dc0..717081666 100644
--- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx
+++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx
@@ -95,17 +95,18 @@ export class UniqueFaceBox extends ViewBoxBaseComponent<FieldViewProps>() {
const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).map(fd => new Float32Array(Array.from(fd)));
const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this.Document), faceDescriptorsAsFloat32Array);
const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1);
- const { faceAnno } = FaceRecognitionHandler.ImageDocFaceAnnos(imgDoc).reduce(
- (prev, faceAnno) => {
- const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(faceAnno.faceDescriptor as List<number>)));
- return match.distance < prev.dist ? { dist: match.distance, faceAnno } : prev;
- },
- { dist: 1, faceAnno: undefined as Opt<Doc> }
- );
+ const faceAnno =
+ FaceRecognitionHandler.ImageDocFaceAnnos(imgDoc).reduce(
+ (prev, faceAnno) => {
+ const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(faceAnno.faceDescriptor as List<number>)));
+ return match.distance < prev.dist ? { dist: match.distance, faceAnno } : prev;
+ },
+ { dist: 1, faceAnno: undefined as Opt<Doc> }
+ ).faceAnno ?? imgDoc;
// assign the face in the image that's closest to the face collection's face
if (faceAnno) {
- FaceRecognitionHandler.UniqueFaceRemoveFaceImage(faceAnno, DocCast(faceAnno.face));
+ faceAnno.face && FaceRecognitionHandler.UniqueFaceRemoveFaceImage(faceAnno, DocCast(faceAnno.face));
FaceRecognitionHandler.UniqueFaceAddFaceImage(faceAnno, this.Document);
faceAnno.face = this.Document;
}