Contagem de objetos em regiões com Ultralytics YOLO26#
A solução RegionCounter do Ultralytics YOLO26 acompanha objetos ao longo dos frames do vídeo e, em cada frame, conta os objetos cujo centro da caixa delimitadora fica dentro de cada região que definires. Cada região é desenhada no frame com a sua própria contagem em tempo real, para que possas monitorizar várias zonas, como corredores de lojas, faixas de rodagem ou áreas de produção, com uma única chamada Python ou um comando CLI.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
Porquê utilizar a contagem por regiões?#
- Várias zonas numa só passagem: Passa um dicionário de polígonos nomeados e cada zona recebe uma contagem independente desenhada no frame, para que um único fluxo de vídeo cubra todas as áreas relevantes.
- Acompanhamento integrado: A solução executa internamente a deteção do YOLO26 e o acompanhamento de objetos, por isso não precisas de configurar um pipeline de acompanhamento separado.
- Contagens que podes ler programaticamente: Cada frame processado devolve um objeto de resultados com um dicionário de contagens por região, pronto para dashboards, alertas ou registos.
Aplicações no mundo real#
| Retalho | Ruas de mercado |
|---|---|
![]() | ![]() |
| Contagem de pessoas em regiões com Ultralytics YOLO | Contagem de multidões em regiões com Ultralytics YOLO |
Como contar objetos em regiões com Ultralytics YOLO#
Executa a solução RegionCounter numa fonte de vídeo a partir da CLI ou do Python. Uma região pode ser uma lista de pontos (uma única zona) ou um dicionário que associa nomes de zonas a listas de pontos. O exemplo de Python abaixo conta objetos em duas regiões nomeadas e grava os frames processados num ficheiro de vídeo de saída:
# Run a region counting example
yolo solutions region show=True
# Pass a source video
yolo solutions region source="path/to/video.mp4"
# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Argumentos de RegionCounter()#
Eis uma tabela com os argumentos de RegionCounter:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
model | str | None | Caminho para um ficheiro de modelo YOLO da Ultralytics. |
region | list ou dict | None | Pontos que definem a região de interesse, seja uma lista de tuplos (x, y) ou um dicionário que associa nomes de regiões a listas de pontos para várias regiões (apenas RegionCounter). Quando None, as soluções que requerem uma região utilizam uma predefinição. |
line_width | int | 2 | Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução. |
verbose | bool | True | Ativa o registo por fotograma da solução, incluindo a forma da entrada, as contagens por classe e a velocidade de processamento. A chamada de rastreamento permanece sempre silenciosa. |
A solução RegionCounter permite utilizar parâmetros de acompanhamento de objetos:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica o algoritmo de rastreamento a utilizar. Opções integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Define o limiar de confiança para as deteções; valores mais baixos permitem rastrear mais objetos, mas podem incluir falsos positivos. |
iou | float | 0.7 | Define o limiar de Interseção sobre a União (IoU) para filtrar deteções sobrepostas. |
classes | list | None | Filtra os resultados pelo índice da classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas. |
device | str | None | Especifica o dispositivo para a inferência (por exemplo, cpu, cuda:0 ou 0). Permite selecionar entre CPU, uma GPU específica ou outros dispositivos de computação para executar o modelo. |
imgsz | int or tuple | 640 | Tamanho da imagem de inferência alvo: um inteiro para um quadrado ou um par (height, width). As formas são ajustadas para o passo do modelo. |
max_det | int | 300 | Número máximo de detecções mantidas por quadro antes do rastreamento, limitando os objetos que uma solução processa em cenas densas. |
quantize | int or str | None | Precisão de inferência: 16 (FP16) ou 32/não definido (FP32) para modelos PyTorch e TorchScript; outros formatos computam na precisão que o artefato e o tempo de execução selecionam. Substitui a flag obsoleta half. |
Além disso, são suportadas as seguintes definições de visualização:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
show | bool | False | Se True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes. |
show_conf | bool | True | Apresenta a pontuação de confiança de cada deteção junto à etiqueta. Permite compreender o grau de certeza do modelo em cada deteção. |
show_labels | bool | True | Apresenta etiquetas para cada deteção no resultado visual. Permite compreender imediatamente os objetos detetados. |
Como funciona a contagem por regiões#
A solução RegionCounter transforma cada região que passas num polígono, com pelo menos três pontos por região. Uma lista simples de pontos torna-se numa única zona denominada Region#01, enquanto um dicionário mantém os teus próprios nomes de zonas; cada zona é desenhada com a sua própria cor da paleta Ultralytics. Em seguida, cada frame é processado em três etapas:
- O rastreamento do YOLO26 deteta e segue cada objeto no frame
- Para cada objeto acompanhado, a solução calcula o centro da caixa delimitadora e verifica em que polígonos de região esse centro se encontra
- A contagem de cada região é desenhada no respetivo centro e as contagens são repostas antes do frame seguinte
Como as contagens recomeçam em cada frame, o número apresentado numa região corresponde à sua ocupação atual, ou seja, quantos objetos estão dentro dela naquele momento, e não a um total acumulado. Para contar cumulativamente os objetos que atravessam uma fronteira, utiliza antes a solução ObjectCounter.
Cada chamada também devolve um objeto de resultados cujo atributo plot_im contém o frame anotado e cujo dicionário region_counts associa os nomes das regiões às respetivas contagens, para que possas utilizar os números na lógica da tua própria aplicação.
Conclusão#
A solução RegionCounter do Ultralytics YOLO26 monitoriza as contagens de objetos em tempo real em tantas zonas nomeadas quantas precisares, com poucas linhas de código. Para explorares mais possibilidades, conta atravessamentos de fronteiras com a contagem de objetos, acompanha objetos dentro de uma única zona com o TrackZone ou explora as restantes Ultralytics Solutions.
Perguntas frequentes#
O Ultralytics YOLO26 conta objetos em regiões acompanhando cada objeto no frame e verificando se o centro da sua caixa delimitadora está dentro de cada polígono definido pelo utilizador. A contagem apresentada numa região corresponde à sua ocupação atual nesse frame, e não a um total acumulado. As opções de configuração estão listadas na secção
RegionCounter()Arguments.Passa o argumento
regioncomo um dicionário que associa nomes de zonas a listas de pontos, como no exemplo principal:from ultralytics import solutions region_points = { "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)], "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)], } regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)Cada zona nomeada é desenhada com a sua própria cor e tem uma contagem independente.
O objeto devolvido por cada chamada
regioncounter(im0)contém um dicionárioregion_countsque associa os nomes das regiões às respetivas contagens, juntamente complot_im(o frame anotado) etotal_tracks(o número de objetos acompanhados). Imprime o objeto de resultados para inspecionar todos os campos disponíveis.Sim. Passa o argumento
classescom os índices das classes a manter, por exemplo,classes=[0]para contar apenas pessoas com um modelo pré-treinado no COCO. A lista completa de argumentos relacionados com o acompanhamento está na secçãoRegionCounter()Arguments.RegionCountermostra quantos objetos estão dentro de cada zona poligonal no frame atual, enquanto o ObjectCounter conta objetos cumulativamente à medida que atravessam uma linha ou fronteira de região, acompanhando os totais de entradas e saídas. UtilizaRegionCounterpara a ocupação em tempo real de uma ou mais zonas eObjectCounterpara a contagem de entradas e saídas; as regiões em forma de linha são suportadas apenas porObjectCounter.

