The SAFR SDK is a set of shared libraries that together implement an object tracking mechanism, face recognition and event reporting. The object tracker is used to locate and track different types of objects (for example, human faces and badges) in a video file or live video stream. Face recognition can learn new identities or match existing identities. The event reporter can notify your application of detection and recognition events. Object detection, face recognition, tracking and event reporting are performed in real time.
The SDK features a C API that exposes a set of ArgusKit objects. All SDK-defined functions and type definitions are prefixed with the
ARK namespace qualifier. The SDK is distributed as a
tar.gz file containing all necessary headers, documentation, and shared libraries. It also includes samples showing how the SDK can be used from your own application, and how the SDK components (shared libraries and auxiliary files) must be packaged with your application in order to ensure ArgusKit works correctly with your application.
While the SDK API design and architecture is the same across all supported platforms, the implementation language of the API may be different. For example, the API may be a C API for some platforms, while it is a Java or C# API for other platforms. Also, the packaging of the SDK is different for each platform to accommodate the technical requirements and limitations of the platform.
The SAFR SDK defines a number of objects that an application uses to track faces or badges. The application creates these objects, configures them, and then interacts with them. Once the application no longer needs a SAFR SDK object, it is expected to release (free) the SAFR SDK objects. All SAFR SDK objects use reference counting to manage the lifetime of the objects.
The following diagram shows the two most important SAFR SDK objects: the
ObjectTracker and the
EventReporter, and how an application interacts with them:
The application receives video frames from a camera, a video file or directly from your application and hands these video frames off to the object tracker. The object tracker processes the video frames internally to detect, recognize, and track objects. The object tracker continuously informs the application about the current state of the object tracker by invoking the object tracker delegate. This delegate is provided by the application and receives information about objects found in the video input stream, objects that have disappeared, and objects that have changed their state. For example, an object may have been detected in one video frame, and it may have been recognized as a specific person in a later video frame. The object tracker informs the application about this change of state.
An application is free to use the information about a tracked object any way it likes. It could display this information in a video overlay in its UI or it could process the information to generate statistical information or events. The SAFR SDK comes with an event reporter able to process a stream of tracked objects to detect certain kinds of events that are then automatically reported to the SAFR cloud or a SAFR server installed on-premises.
For SAFR SDK system requirements, go to SAFR.com.