我试图比较一个单一的面部图像与存储在firestore中的面部图像列表。但MatchFacesRequest只允许两个图像进行比较。第一个新图像和第二个已经存储。这里是我想要比较的快照数据的员工列表
List<Empl> emp = snapshot.data!.docs.map((e) => e.data()).toList();
这里,图像1是需要与图像列表进行比较的最新图像,图像2应该是EMP图像列表。
createButton(
"Match",
() {
var image2 = Regula.MatchFacesImage();
image2.bitmap = emp[0].imageBase64;
image2.identifier = emp[0].name;
image2.imageType = 1;
setState(() => _similarity = "Processing...");
var request = Regula.MatchFacesRequest();
request.images = [image1, image2];
Regula.FaceSDK.matchFaces(jsonEncode(request)).then(
(value) {
var response =
Regula.MatchFacesResponse.fromJson(
json.decode(value));
Regula.FaceSDK
.matchFacesSimilarityThresholdSplit(
jsonEncode(response!.detections),
0.75)
.then(
(str) {
var split = Regula
.MatchFacesSimilarityThresholdSplit
.fromJson(json.decode(str));
setState(
() => _similarity =
split!.matchedFaces.isNotEmpty
? ((split.matchedFaces[0]!
.similarity! *
100)
.toStringAsFixed(2) +
"%")
: "error",
);
// debugPrint(
// ' image index : ${split!.matchedFaces[0]!.first!.imageIndex!}');
},
);
},
);
},
),
我正在使用Regula flutter_face_api
plugin,但这没有正确的文档。here是面部匹配的文档。但仅用于单个图像而不是图像列表。
1条答案
按热度按时间pjngdqdw1#
您只需将正在比较的图像添加到请求的图像列表中:
之后,您可以检查匹配的面孔:
这将产生如下两个MatchFaces列表:
我,实际上,改变了GIST中三个图像的官方示例,当然,如果你需要更多关于它们的信息,你只需要在响应的循环中工作。
Full main.dart GIST here