> For the complete documentation index, see [llms.txt](https://portal-integracao.intelbras.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/deteccao-de-epi.md).

# Detecção de EPI

Integração de detecção de EPI via WorkSuitCompareServer: gerencie bibliotecas de conformidade, busque registros, extraia features e associe grupos por canal.

## Dicas & Boas Práticas <a href="#dicas-and-boas-praticas" id="dicas-and-boas-praticas"></a>

• Sempre verifique as capacidades do dispositivo antes de criar ou implantar bibliotecas de conformidade.

• Após criar ou modificar grupos, valide a aplicação correta utilizando as consultas findGroup ou getGroup.

• Utilize níveis de similaridade adequados ao cenário:

* valores muito altos podem gerar falsos negativos
* valores muito baixos podem gerar falsos positivos.

• Interrompa buscas ou processos de extração que não estejam mais em uso para evitar consumo desnecessário de recursos do dispositivo.

• Realize limpeza periódica de registros antigos utilizando deleteByUID para manter a base otimizada.

• Após implantar bibliotecas em canais de vídeo, confirme a associação correta utilizando o endpoint getGroup.

***

### Tabela de Parâmetros

<table><thead><tr><th>Name</th><th>Type</th><th width="93.18524169921875">R/O</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><strong>Group</strong></td><td>object</td><td>R</td><td>Informações do grupo da biblioteca de conformidade</td><td>—</td></tr><tr><td>GroupID</td><td>char[64]</td><td>R/O</td><td>ID do grupo de conformidade (até 63 caracteres)</td><td><code>"000001"</code></td></tr><tr><td>GroupName</td><td>char[128]</td><td>R/O</td><td>Nome do grupo de conformidade (até 127 caracteres)</td><td><code>"takeout"</code></td></tr><tr><td>GroupType</td><td>enumchar[16]</td><td>O</td><td>Tipo da biblioteca de conformidade. Atualmente suportado: <code>"BlockListDB"</code></td><td><code>"BlockListDB"</code></td></tr><tr><td>GroupDetail</td><td>char[256]</td><td>O</td><td>Descrição ou observação do grupo</td><td><code>"community owner"</code></td></tr><tr><td>Type</td><td>enumchar[16]</td><td>O</td><td>Tipo de comparação do grupo</td><td><code>"WorkSuit"</code>, <code>"ClothesCommon"</code></td></tr><tr><td>CutoutPolicy</td><td>uint32</td><td>O</td><td>Política de recorte da imagem: <code>0</code> Corpo inteiro, <code>1</code> Parte superior</td><td><code>1</code></td></tr><tr><td>Similarity</td><td>uint8</td><td>O</td><td>Limite de similaridade (1–100), padrão 67</td><td><code>90</code></td></tr><tr><td>GroupSize</td><td>int</td><td>O</td><td>Quantidade de itens (uniformes) no grupo</td><td><code>30</code></td></tr><tr><td>Channels</td><td>int16[]</td><td>O</td><td>Lista de canais vinculados ao grupo. <code>[-1]</code> indica não vinculado</td><td><code>[0]</code></td></tr><tr><td>Similarity[]</td><td>uint8[]</td><td>O</td><td>Similaridade configurada por canal (1–100)</td><td><code>[90]</code></td></tr><tr><td>FeatureState[]</td><td>uint[4]</td><td>O</td><td>Estatísticas de estado dos recursos do grupo</td><td><code>[10,20,30,40]</code></td></tr><tr><td><strong>GroupList</strong></td><td>object[]</td><td>O</td><td>Lista de grupos de conformidade retornados</td><td>—</td></tr><tr><td><strong>Condition</strong></td><td>object</td><td>R</td><td>Parâmetros de entrada para busca de uniformes</td><td>—</td></tr><tr><td>Token</td><td>uint</td><td>R</td><td>Token de busca retornado pelo <code>startFind</code></td><td><code>46878</code></td></tr><tr><td>BeginNumber</td><td>uint</td><td>R</td><td>Índice inicial da busca</td><td><code>0</code></td></tr><tr><td>Count</td><td>int</td><td>R</td><td>Quantidade de registros por página (máx. 50)</td><td><code>20</code></td></tr><tr><td>NeedData</td><td>uint</td><td>O</td><td>Máscara de retorno de imagem (bit0 = link HTTP)</td><td><code>1</code></td></tr><tr><td><strong>Results</strong></td><td>object</td><td>R</td><td>Resultado da busca</td><td>—</td></tr><tr><td>Found</td><td>int</td><td>R</td><td>Quantidade real de registros retornados</td><td><code>12</code></td></tr><tr><td>Candidates</td><td>object[]</td><td>R</td><td>Lista de candidatos encontrados (máx. 50)</td><td>—</td></tr><tr><td><strong>WorkSuit</strong></td><td>object</td><td>R</td><td>Informações do uniforme de trabalho encontrado</td><td>—</td></tr><tr><td>UID</td><td>string</td><td>O</td><td>Identificador único do uniforme (até 31 caracteres)</td><td><code>"0005"</code></td></tr><tr><td>GroupID</td><td>string</td><td>O</td><td>ID da biblioteca de conformidade</td><td><code>"10000"</code></td></tr><tr><td>GroupName</td><td>string</td><td>O</td><td>Nome do grupo associado</td><td><code>"Group1"</code></td></tr><tr><td>FeatureState</td><td>uint</td><td>O</td><td>Estado do recurso: <code>0</code> desconhecido, <code>1</code> falha, <code>2</code> sucesso, <code>3</code> inválido (upgrade), <code>4</code> em processamento</td><td><code>2</code></td></tr><tr><td>FeatureErrCode</td><td>uint</td><td>O</td><td>Código de erro de extração de recurso</td><td><code>0</code></td></tr><tr><td>ImagePath</td><td>string</td><td>O</td><td>Caminho da miniatura do uniforme</td><td><code>"/mnt/2010/8/1/dav/15:40:50.jpg"</code></td></tr><tr><td>SourceUID</td><td>string</td><td>O</td><td>UID da imagem panorâmica de origem</td><td><code>"1"</code></td></tr><tr><td>SourceFileName</td><td>string</td><td>O</td><td>Nome do arquivo da imagem panorâmica</td><td><code>"aaa"</code></td></tr><tr><td><strong>Image</strong></td><td>object</td><td>O</td><td>Informações da imagem binária retornada</td><td>—</td></tr><tr><td>Width</td><td>uint</td><td>O</td><td>Largura da imagem</td><td><code>100</code></td></tr><tr><td>Height</td><td>uint</td><td>O</td><td>Altura da imagem</td><td><code>50</code></td></tr><tr><td>Offset</td><td>uint</td><td>O</td><td>Offset no bloco binário</td><td><code>0</code></td></tr><tr><td>Length</td><td>uint</td><td>O</td><td>Tamanho da imagem (bytes)</td><td><code>10000</code></td></tr></tbody></table>

***

### Fluxo de consulta:

1 . startFind → inicia a busca e retorna Token\
2\. doFind → recupera resultados\
3\. stopFind → encerra a busca

***

### Adicionar Grupo de Conformidade de Vestuário

**Tópico:** Cria um novo **grupo de conformidade de vestuário** no sistema. Esse grupo funciona como uma biblioteca que armazena características de roupas/uniformes para posterior comparação e validação.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/createGroup`

**Exemplo:**

```json
{ 
    "Group": { 
        "GroupName": "takeout", 
        "CutoutPolicy": 1, 
        "Similarity": 90, 
        "GroupType": "BlockListDB", 
        "GroupDetail": "community owner", 
        "Type": "ClothesCommon" 
    } 
} 
```

**Resposta**:

```json
{ 
    "GroupID": "10000" 
} 
```

### Excluir Grupo de Conformidade

**Tópico:** Remove permanentemente uma biblioteca de conformidade existente, juntamente com todas as informações associadas a ela.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/deleteGroup`

**Exemplo:**

```json
{ 
    "GroupID": "000001" 
} 
```

**Resposta**:

```
{} 
```

### Consultar Grupo de Conformidade

**Tópico:** Consulta os detalhes de uma biblioteca de conformidade específica, incluindo informações como tamanho do grupo, canais associados, similaridade configurada e estado dos recursos.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/findGroup`

**Exemplo:**

```json
{ 
    "GroupID": "000001" 
} 
```

**Resposta**:

```json
{ 
    "GroupList": [{ 
        "GroupID": "000001", 
        "GroupName": "taken", 
        "CutoutPolicy": 0, 
        "GroupType": "BlockListDB", 
        "GroupDetail": "community owner", 
        "GroupSize": 30, 
        "Channels": [0], 
        "Similarity": [90], 
        "FeatureState": [10,20,30,40] 
    },…{}] 
} 
```

### Obter Informações de Armazenamento da Biblioteca

**Tópico:** Consulta quais bibliotecas de conformidade estão associadas a um determinado canal de vídeo, bem como suas políticas e parâmetros principais.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/getGroup`

**Exemplo:**

```json
{ 
    "Channel": 0 
} 
```

**Resposta**:

```json
{ 
    "GroupList": [{ 
        "GroupID": "001", 
        "Similarity": 80, 
        "CutoutPolicy": 1 
    },…{}] 
}
```

### Modificar Informações do Grupo de Conformidade

**Tópico:** Atualiza propriedades de um grupo de conformidade existente, como nome, similaridade, tipo e descrição.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/modifyGroup`

**Exemplo:**

```json
{
    "Group": {
        "GroupID": "0001",
        "GroupName": "park",
        "Similarity": 90,
        "GroupType": "BlockListDB",
        "GroupDetail": "community owner"
    }
}
```

**Resposta**:

```
{}
```

### Implantar Grupo de Conformidade

**Tópico:** Associa uma ou mais bibliotecas de conformidade a um canal específico, habilitando efetivamente a comparação de vestuário naquele canal.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/setGroup`

**Exemplo:**

```json
{ 
    "Channel": 0, 
    "GroupList": [{ 
        "GroupID": "001", 
        "Similarity": 80 
    },…{}] 
} 
```

**Resposta**:

```
{}
```

### Buscar Informações Sobre EPIs na Biblioteca

**Tópico:** Inicia uma busca por registros de vestuário de trabalho armazenados nas bibliotecas de conformidade, com base em condições específicas.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/startFind`

**Exemplo:**

```json
{ 
    "Condition": { 
        "GroupID": ["00001","00002"] 
    }, 
    "WorkSuit": { 
        "FeatureState": 1 
    } 
} 
```

**Resposta**:

```json
{ 
    "Token": 2342343, 
    "TotalCount": 3333 
} 
```

### Obter Resultado de Informações sobre EPIs

**Tópico:** Recupera os resultados da busca iniciada anteriormente, utilizando o **Token** fornecido pelo `startFind`.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/doFind`

**Exemplo:**

```json
{ 
    "Condition": { 
        "Token": 46878, 
        "BeginNumber": 0, 
        "Count": 20, 
        "NeedData": 1 
    } 
} 
```

**Resposta**:

```json
{
    "Results": {
        "Found": 12,
        "Candidates": [{
            "WorkSuit": {
                "UID": "111",
                "GroupID": "0001",
                "GroupName": "group1",
                "FeatureState": 1,
                "FeatureErrCode": 2,
                "ImagePath": "/mnt/2010/8/1/dav/15:40:50.jpg",
                "SourceUID": "1",
                "SourceFileName": "aaaaa",
                "Image": {
                    "Width": 1920,
                    "Height": 1080,
                    "Offset": 0,
                    "Length": 1156
                }
            }
        }]
    }
}
```

### Interromper Busca por Informações sobre EPIs

**Tópico:** Interrompe uma busca em andamento iniciada pelo `startFind`, liberando recursos do sistema.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/stopFind`

**Exemplo:**

```json
{ 
    "Token": 46878 
}
```

**Resposta**:

```
{}
```

### Excluir Informações do Uniforme

**Tópico:** Remove registros específicos de vestuário de trabalho com base em seus identificadores únicos (UID).

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/deleteByUID`

**Exemplo:**

```json
{ 
    "UID": ["123", "234"] 
} 
```

**Resposta**:

```json
{ 
    "ErrCode": [0,0] 
} 
```

### Extrair Recursos de EPIs

**Tópico:** Inicia o processo de **extração de características** (features) de registros de vestuário já existentes.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/reAbstract`

**Exemplo:**

```json
{ 
    "WorkSuit": [{ 
        "UID": "120837" 
    },…{}], 
    "Token": 1 
} 
```

**Resposta**:

```
{}
```

### Interromper as Funcionalidades de EPIs

**Tópico:** Interrompe o processo de extração de recursos iniciado anteriormente.

**Métodos: `POST`**`/cgi-bin/api/WorkSuitCompareServer/stopReAbstract`

**Exemplo:**

```
{}
```

**Resposta**:

```
{}
```

***

Notas Finais:

• Todas as interfaces do WorkSuitCompareServer utilizam requisições HTTP POST com corpo em formato JSON.

• A maioria das operações de busca é assíncrona e utiliza Token para controle de sessão.

• O fluxo padrão de busca consiste em:\
startFind → doFind → stopFind.

• O retorno {} ou OK geralmente indica que a operação foi executada com sucesso.

• Recomenda-se tratar os códigos de erro retornados (ErrCode e FeatureErrCode) no sistema cliente para facilitar diagnóstico e auditoria.

• A correta implantação das bibliotecas em canais de vídeo é essencial para que o sistema de verificação de conformidade funcione corretamente.

***


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/deteccao-de-epi.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
