> For the complete documentation index, see [llms.txt](https://doc.celantur.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.celantur.com/sdk/architecture.md).

# Architecture

### Overview

The main class is `CelanturSDK::Processor`. It provides the interface to the anonymisation library.&#x20;

To create the instance of this class one needs:

1. `ProcessorParams` class with `inference_plugin` field instantiated.
2. `license_path` variable that points to the valid instance of the license.

After creating the processor, you need to load an model and use following functions to perform anonymisation:

1. `process` to post a new image to processing. The function is non-blocking and returns control immediately after posting the image to the processing queue.
2. `get_result` to get the next anonymised image from the queue.
3. `get_detections` to get the list of detections that were detected. One can use them e.g. to debug the results, display detections or create metadata JSON similar to [Container](/container/getting-started.md).

### Modules

You need two CMake modules to use SDK. First is `CppProcessing::CelanturSDK` that consists of the general interfaces to the SDK and is the entry point for interaction with it. Another one is `CppProcessing::common-module` , which consists of multiple definitions, classes and structures.

Other shared objects do not provide include files because they are transient dependencies of `CelanturSDK` .

### Plugins

Different inference plugins require different dependencies installed on the target machine. For example, `libONNXInference.so` depends on [ONNX](https://onnx.ai/) to run the detection on CPU. `libTensorRTRuntime.so` depends on NVIDIA's CUDA libraries to provide detections on GPU. To avoid having hard dependencies to these libraries, we use the plugin system where the dependencies are encapsulated in the plugin that is being loaded at runtime. You need to load at least one inference engine plugin for the SDK to work, which is covered in <https://github.com/celantur/SDKExample/>.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.celantur.com/sdk/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
