FaceSDK 8.2
Released 26 September 2024
In order to evaluate FaceSDK, you will need to start trial period here.
The license fees for FaceSDK vary and are based on how FaceSDK is being used. For specific pricing information, please fill in our FaceSDK license use form.
No. The additional visual effects found in our end-user products or on Web sites are not included in FaceSDK. If you want to use these applications, fill in this form and specify the type of technology you are interested in.
You can use FaceSDK with any DB you like. FaceSDK facial templates are created as a binary field. Our sample application Lookalikes demonstrates how to use FaceSDK with SQL databases.
Yes. The 8.2 version of FaceSDK supports MJPEG cameras.
FaceSDK can compare a single face to a database of faces at a matching speed of 53191489 comparisons per second on an AMD Ryzen 5 1600X processor with 12 threads. You can find the ROC diagram here.
Yes, you can see FaceSDK in both web and mobile applications. See baby generator as an example of a mobile app, as well as MakeMeBabies which is a web app.
Yes. FaceSDK works in low light conditions and it can even process pictures from infrared or nightvision cameras. We recommend making several facial templates for each person in low light conditions.
FaceSDK supports the following operating systems:
- Windows Windows 7, 8, 10, 11, Windows Server 2008R2, 2012, 2016, 2019, 2022
- Linux (RHEL 7+, CentOS 7+ and other)
- Linux armv7/arm64 (Raspberry Pi2+)
- macOS 10.13+ x86_64
- iOS 9.0+, arm64 / armv7 / x86_64 / x86 (iPhone, iPad, simulator)
- Android 5.0+ (platform version 21+), arm64 (arm64-v8a)/ armv7 (armeabi-v7a)/ x86 / x86_64
FaceSDK supports the following languages and platforms:
- C++, Microsoft Visual C++ 6.0 / 2005 / 2008 / 2010 / 2012 / 2013 / 2015 / 2017+, GCC, LLVM/CLANG
- Visual Basic .NET 2005 / 2008 / 2010+, Microsoft C# .NET 2005 / 2008 / 2010+
- Delphi 6.0+
- Netbeans (Java)
- Xcode 7.2+ (iOS)
- Android Studio (Android)
- Visual Basic 6.0 and C++ Builder 6.0
- Flutter
- React Native
- Web Assembly
Yes. For more information, fill out this form and specify your interest in our facial recognition WebAPI.
Make sure the webserver has write access to the "uploaded" directory
If using new php version 5.5+, change "@$saved_filename" in sample code to the CurlFile or curl_file_create call:
'client_file1' => curl_file_create("$saved_filename"),
Make sure you pass md5 hash of password + date, as described in docs.
The error codes are listed here: https://www.luxand.com/facesdk/documentation/errorcodes.php
Additionally Windows API error codes can be returned in some rare cases on Windows (large numbers).
The most common error code is -2 when the key wasn’t passed to FSDK_ActivateLibrary.
If Tracker is used (FSDK_FeedFrame) - adjust Tracker parameters using FSDK_SetTrackerMultipleParameters / FSDK_SetTrackerParameter:
https://www.luxand.com/facesdk/documentation/tracker.php#TrackerParameters
For example, pass RecognizeFaces=false if you need face tracking only instead of face recognition. Also try lower InternalResizeWidth values and HandleArbitraryRotations=false.
If Tracker is not used - you can adjust InternalResizeWidth and HandleArbitraryRotations using the FSDK_SetFaceDetectionParameters:
https://www.luxand.com/facesdk/documentation/facedetection.php#FSDK_SetFaceDetectionParameters
By default, FaceSDK tries to maximize performance by utilizing all available CPU cores. Try limiting the CPU cores usage by calling FSDK_SetNumThreads(3) or FSDK_SetNumThreads(2), or even FSDK_SetNumThreads(1).
Make sure you call the correct function. If Tracker is used (FSDK_FeedFrame) - you should pass the face detection parameters using FSDK_SetTrackerMultipleParameters / FSDK_SetTrackerParameter.
If Tracker is not used (FSDK_DetectFace/FSDK_DetectMultipleFaces) - you should pass the face detection parameters using FSDK_SetFaceDetectionParameters / FSDK_SetFaceDetectionThreshold.
Please follow the recommendation from https://www.luxand.com/facesdk/documentation/maskon.php
to load the special mask-on face detection model and set TrimFacesWithUncertainFacialFeatures=false.
You can try the following approach.
1. Try to detect a face two times with TrimFacesWithUncertainFacialFeatures=true and TrimFacesWithUncertainFacialFeatures=false (https://www.luxand.com/facesdk/documentation/maskon.php).
2. If the face is detected only with TrimFacesWithUncertainFacialFeatures=false then use lower threshold value for face matching.
Sometimes JRE can't find the library in the project directory.
On 32-bit Windows you can try copying the file win32\facesdk.dll from FaceSDK installation to the directory C:\Windows\System32.
On 64-bit Windows you can try copying the file win64\facesdk.dll from FaceSDK installation to the directory C:\Windows\System32 and the file win32\facesdk.dll to the directory C:\Windows\Syswow64.
On Linux/macOS try copying libfsdk to /usr/lib.
Tracker API designed to work with continuous video streams. To work with images you need to call:
FSDK_SetTrackerParameter(tracker, "VideoFeedDiscontinuity", "0");
before each FSDK_FeedFrame call.
Also you may need to call FSDK_FeedFrame several times (2-3) for each image. FSDK_SetTrackerParameter(tracker, "VideoFeedDiscontinuity", "0") should be called only once for such a group of FSDK_FeedFrame calls.
From our past experience, the ability to open the camera which is already open in an application depends on the camera driver. It was possible with some cameras and with others we got an error in FSDK_OpenVideoCamera call.
Unfortunately such a scenario is not supported by Tracker yet.
You can replace FSDK_FeedFrame call with FSDK_DetectiMultipleFaces, FSDK_GetFaceTemplateInRegion, FSDK_MatchFaces calls:
https://www.luxand.com/facesdk/documentation/facematching.php
Then it will be possible to send/receive individual face templates to/from the server or any other device.
Another possible solution is to implement Tracker memory merging using the trackerMemoryTool.py utility from the samples\advanced\Python directory of FaceSDK installation, but that can be much harder.
To run your .NET application, please make sure of the following:
- facesdk.dll has been placed in the same folder as your application
- facesdk.dll is 32- or 64-bit, depending on your application (System.BadImageFormatException may arise when using wrong library)
The .NET wrapper from samples\advanced directory can be used with .NET core by disabling the code working with System.Drawing.Image. The ASP .NET Core sample is available here:
https://www.luxand.com/tmp/ASP.NET_8.0_x64.zip
Pre-release samples for Android are available here:
https://www.luxand.com/tmp/FaceSDK_8_0.LiveRecognition.Xamarin.Android.zip
https://www.luxand.com/tmp/Unity_8.0.zip
That happens when the Java package for the class FSDK is changed. That is not allowed because FSDK class is partially implemented natively in libfsdk.so binary. The package for FSDK has to be com.luxand.
FSDK class also should be added to the ProGuard exclusions, if used.
Please make sure you have Media Foundation installed. It is not installed by default on Windows Server.
The following modifications are needed to the sample code.
1. Inside Preview.surfaceCreated method, change the line
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
to the line:
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
2. Inside ProcessImageAndDrawResults.onDraw method, comment out the call:
FSDK.MirrorImage(Image, false);
and change the line
FSDK.RotateImage90(Image, -1, RotatedImage);
to the line:
FSDK.RotateImage90(Image, 1, RotatedImage);
Please check the following sample for Windows 64-bit:
https://www.luxand.com/download/VideoFaceRecognition_MSVC_Win64.zip
We have only preliminary support of RTSP cameras. Please check the following samples:
https://www.luxand.com/download/MSVC_RTSP_sample.zip
https://www.luxand.com/download/CSharp_RTSP_sample.zip
https://www.luxand.com/download/VB_RTSP_sample.zip
Different Delphi versions use different character encoding for strings. You can make the following changes to the code to fix that:
1. Change PAnsiChar(inputName) to PAnsiChar(AnsiString(inputName))
2. Also change the type of userName to userName: array[0..1023] of AnsiChar
Unfortunately, FaceSDK does not always run smoothly with VB6. However, most of the problems you will encounter are caused by VB6, not FaceSDK. If you receive an error while trying to compile the application, try opening file .vbp with the vb6.exe program (instead of opening VB6 first and then trying to open the project). Please also try to install Microsoft Visual C++ 2017 Redistributable (this can be found in the bin folder of the FaceSDK installation).
Click here to view our online FaceSDK documentation or download it here.
If you are still experiencing problems with FaceSDK or have additional questions that were not answered in these FAQs, please contact our support team at support@luxand.com. Be sure to include a full description of your problem and the source code (if you are receiving errors and do not know how to fix them). This will help our support team assist you more quickly.