diff --git a/openbr/janus b/openbr/janus index 50adc73..9844d8a 160000 --- a/openbr/janus +++ b/openbr/janus @@ -1 +1 @@ -Subproject commit 50adc738e88f7290ed2598e52a501538a95942c7 +Subproject commit 9844d8a3a0a90344ad9382b9e99e51a913dfbcfb diff --git a/openbr/janus.cpp b/openbr/janus.cpp index 9b48574..d8f6eb3 100644 --- a/openbr/janus.cpp +++ b/openbr/janus.cpp @@ -136,3 +136,23 @@ janus_error janus_enroll(const janus_template template_, const janus_template_id delete template_; return JANUS_SUCCESS; } + +janus_error janus_gallery_size(janus_gallery gallery, int *size) +{ + *size = TemplateList::fromGallery(gallery).size(); + return JANUS_SUCCESS; +} + +janus_error janus_compare(janus_gallery target, janus_gallery query, double *similarity_matrix, janus_template_id *target_ids, janus_template_id *query_ids) +{ + const TemplateList targets = TemplateList::fromGallery(target); + const TemplateList queries = TemplateList::fromGallery(query); + QScopedPointer matrix(MatrixOutput::make(targets.files(), queries.files())); + distance->compare(targets, queries, matrix.data()); + const QVector targetIds = File::get(matrix->targetFiles, "TEMPLATE_ID").toVector(); + const QVector queryIds = File::get(matrix->queryFiles, "TEMPLATE_ID").toVector(); + memcpy(similarity_matrix, matrix->data.data, matrix->data.rows * matrix->data.cols * sizeof(double)); + memcpy(target_ids, targetIds.data(), targetIds.size() * sizeof(janus_template_id)); + memcpy(query_ids, queryIds.data(), queryIds.size() * sizeof(janus_template_id)); + return JANUS_SUCCESS; +}