aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2024-08-26 22:49:10 -0400
committerbobzel <zzzman@gmail.com>2024-08-26 22:49:10 -0400
commitcf38fc81b69abb084938c8f45eaf5d94caacb3a3 (patch)
tree3c7db77a89ddaac534bdf19bfa77778dd2e70906 /src
parentf0d9731e1c43ee13114d42db8c4e27c94bbbf3c0 (diff)
added face rectangle annotations for faces in images
Diffstat (limited to 'src')
-rw-r--r--src/client/views/search/FaceRecognitionHandler.tsx7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx
index dee0ab99b..4e500d24e 100644
--- a/src/client/views/search/FaceRecognitionHandler.tsx
+++ b/src/client/views/search/FaceRecognitionHandler.tsx
@@ -243,12 +243,17 @@ export class FaceRecognitionHandler {
FaceRecognitionHandler.loadImage(imgUrl).then( // load image and analyze faces
img => faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors()
.then(imgDocFaceDescriptions => { // For each face detected, find a match.
+ const annos = [] as Doc[];
+ const scale = NumCast(imgDoc.data_nativeWidth) / img.width;
for (const fd of imgDocFaceDescriptions) {
const faceDescriptor = new List<number>(Array.from(fd.descriptor));
+ annos.push(Docs.Create.FreeformDocument([], {backgroundColor: "#55555555", x: fd.alignedRect.box.left*scale, y: fd.alignedRect.box.top*scale, _width: fd.alignedRect.box.width*scale, _height: fd.alignedRect.box.height*scale}))
FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); // add face descriptor to image's list of descriptors
const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard);
FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face
- } //
+ }
+
+ imgDoc[DocData].data_annotations = new List<Doc>(annos);
return imgDocFaceDescriptions;
})
);