Face Identification
This module lets you search for a face from an image in a database of faces. Learn more in the Web Service section.
Function call
The function call is searchPerson(searchRequest, callback).
searchRequest is an object representing the search request, it contains the following properties:
- The
groupsproperty is optional and specifies the groups where the search should be conducted. If no groups are provided, the search is performed in the default group. - The
imageUploadproperty represents the image to be uploaded for the search. - The
thresholdproperty denotes the similarity threshold. - The
limitproperty defines the maximum number of results to be returned. - The
detectAllproperty enables the detection of all faces in the image. If set to false, only the most central face is detected. - The
outputImageParamsproperty allows specifying image settings, such as image size and aspect ratio, for the face images that are returned in the identification response.
callback is a function invoked once the search operation is completed. Includes search results as a list of SearchPerson objects.
let imageUpload = PersonDatabase.ImageUpload(imageData: yourImageData)
let searchRequest = PersonDatabase.SearchPersonRequest(imageUpload: imageUpload)
searchRequest.groupIdsForSearch = groupIds
searchRequest.detectAll = true
FaceSDK.service.personDatabase.searchPerson(searchRequest: searchRequest) { response in
// handle response
}
RFSImageUpload *imageUpload = [[RFSImageUpload alloc] initWithImageData:yourImageData];
RFSSearchPersonRequest *searchRequest = [[RFSSearchPersonRequest alloc] initWithImageUpload:imageUpload];
searchRequest.groupIdsForSearch = groupIds;
searchRequest.detectAll = YES;
[RFSFaceSDK.service.personDatabase searchPerson:searchRequest completion:^(RFSSearchPersonResponse * _Nonnull response) {
// handle response
}];
val imageUpload = ImageUpload()
val imageData = <byte array>
imageUpload.imageData = imageData
val searchPersonRequest = SearchPersonRequest()
searchPersonRequest.groupIdsForSearch = <array of String>
searchPersonRequest.imageUpload = imageUpload
searchPersonRequest.detectAll = true
FaceSDK.Instance().personDatabase(context)
.searchPerson(searchPersonRequest, object : PersonDBCallback<List<SearchPerson?>?> {
override fun onSuccess(response: List<SearchPerson?>?) {
//Handle positive response
}
override fun onFailure(message: String) {
//Handle failed request here
}
})
ImageUpload imageUpload = new ImageUpload();
imageUpload.setImageData(byte[] data);
SearchPersonRequest searchPersonRequest = new SearchPersonRequest();
searchPersonRequest.setGroupIdsForSearch(String[] ids);
searchPersonRequest.setImageUpload(imageUpload);
searchPersonRequest.setDetectAll(true);
FaceSDK.Instance().personDatabase(context).searchPerson(searchPersonRequest,
new PersonDBCallback<List<SearchPerson>>() {
@Override
public void onSuccess(@Nullable List<SearchPerson> response) {
}
@Override
public void onFailure(@NonNull String message) {
//Handle failed request here
}
});
var request = SearchPersonRequest(
ImageUpload.withImageData(imageData),
groupIdsForSearch: ["id1", "id2", "id3"],
detectAll: true,
);
var (searchPerson, error) = await FaceSDK.instance.personDatabase.searchPerson(request);
var request = new SearchPersonRequest(
ImageUpload.withImageData(imageData), {
groupIdsForSearch: ["id1", "id2", "id3"],
detectAll: true,
});
var [searchPerson, error] = await FaceSDK.instance.personDatabase.searchPerson(request);
// Android
public void SearchPerson(byte[] data, String[] ids)
{
ImageUpload imageUpload = new();
imageUpload.SetImageData(data);
SearchPersonRequest searchPersonRequest = new();
searchPersonRequest.SetGroupIdsForSearch(ids);
searchPersonRequest.ImageUpload = imageUpload;
searchPersonRequest.DetectAll = true;
FaceSDK.Instance().PersonDatabase().SearchPerson(searchPersonRequest, this);
}
public void OnSuccess(Java.Lang.Object response)
{
}
public void OnFailure(string message)
{
//Handle failed request here
}
// iOS
RFSImageUpload imageUpload = new(yourImageData);
RFSSearchPersonRequest searchRequest = new(imageUpload)
{
GroupIdsForSearch = groupIds,
DetectAll = true
};
RFSFaceSDK.Service.PersonDatabase.SearchPerson(searchRequest, (RFSSearchPersonResponse response) =>
{
// handle response
});
var imageUpload = new ImageUpload();
imageUpload.imageData = "base64";
var searchPersonRequest = new SearchPersonRequest();
searchPersonRequest.groupIdsForSearch = [];
searchPersonRequest.imageUpload = imageUpload;
searchPersonRequest.detectAll = true;
FaceSDK.searchPerson(searchPersonRequest, (response) => {
}, _ => { });
var imageUpload = new ImageUpload();
imageUpload.imageData = "base64";
var searchPersonRequest = new SearchPersonRequest();
searchPersonRequest.groupIdsForSearch = [];
searchPersonRequest.imageUpload = imageUpload;
searchPersonRequest.detectAll = true;
FaceSDK.searchPerson(searchPersonRequest, function (response) {
}, function (e) { });
var imageUpload = new ImageUpload();
imageUpload.imageData = "base64";
var searchPersonRequest = new SearchPersonRequest();
searchPersonRequest.groupIdsForSearch = [];
searchPersonRequest.imageUpload = imageUpload;
searchPersonRequest.detectAll = true;
FaceSDK.searchPerson(searchPersonRequest).then((response) => {
});
Tag
The detailed tag description is available at Online License Transactions
To set up a tag, invoke:
let imageUpload = PersonDatabase.ImageUpload(imageData: yourImageData)
let searchRequest = PersonDatabase.SearchPersonRequest(imageUpload: imageUpload)
searchRequest.groupIdsForSearch = groupIds
searchRequest.detectAll = true
searchRequest.tag = UUID().uuidString
FaceSDK.service.personDatabase.searchPerson(searchRequest: searchRequest) { response in
// handle response
}
RFSImageUpload *imageUpload = [[RFSImageUpload alloc] initWithImageData:yourImageData];
RFSSearchPersonRequest *searchRequest = [[RFSSearchPersonRequest alloc] initWithImageUpload:imageUpload];
searchRequest.groupIdsForSearch = groupIds;
searchRequest.detectAll = YES;
searchRequest.tag = [[NSUUID UUID] UUIDString];
[RFSFaceSDK.service.personDatabase searchPerson:searchRequest completion:^(RFSSearchPersonResponse * _Nonnull response) {
// handle response
}];
val searchRequest = SearchPersonRequest()
searchRequest.groupIdsForSearch = groupIds
searchRequest.isDetectAll = true
searchRequest.tag = UUID.randomUUID().toString()
FaceSDK.Instance().personDatabase(context).searchPerson(searchRequest, object : PersonDBCallback<MutableList<SearchPerson?>?> {
override fun onSuccess(response: MutableList<SearchPerson?>?) {
}
override fun onFailure(message: String) {
}
})
SearchPersonRequest searchRequest = new SearchPersonRequest();
searchRequest.setGroupIdsForSearch(groupIds);
searchRequest.setDetectAll(true);
searchRequest.setTag(UUID.randomUUID().toString());
FaceSDK.Instance().personDatabase(context).searchPerson(searchRequest, new PersonDBCallback<>() {
@Override
public void onSuccess(@Nullable @org.jetbrains.annotations.Nullable List<SearchPerson> response) {
}
@Override
public void onFailure(@NonNull String message) {
}
});
var request = new SearchPersonRequest(
ImageUpload.withImageData(image),
tag: tag,
);
var request = new SearchPersonRequest(
ImageUpload.withImageData(image),
{ tag: tag }
);
// Android
var searchRequest = new SearchPersonRequest();
searchRequest.Tag = tag;
// iOS
var searchRequest = new RFSSearchPersonRequest(new RFSImageUpload(image));
searchRequest.Tag = tag;
Endpoints
The in-detail information is available in the Face SDK OpenAPI specification: