3
respostas

Linha ROI

Olá! Gostaria de uma sugestão que me ajudasse a deixar a linha ROI mais inclinada. Estou trabalhando com um video!=video de uma rua de duas vias passando carros onde preciso contar somente os carros que passam na outra via, logo a minha linha roi precisaria inclinar para nao detectar a centroide do veiculo mais de uma vez

3 respostas

Olá, Vanessa! Tudo bem com você?

Atualmente, a linha ROI é definida como uma linha horizontal com a função cv2.line(), que recebe como parâmetros o frame e dois pontos que definem a linha. Os pontos são definidos por coordenadas (x, y), sendo (25, linha_ROI) o ponto de início e (1200, linha_ROI) o ponto final. Como a coordenada y (linha_ROI) é a mesma para ambos os pontos, isso resulta em uma linha horizontal.

Para criar uma linha inclinada, você pode alterar as coordenadas y dos pontos de início e fim. Por exemplo, se você quiser uma linha inclinada para a direita, você pode aumentar o valor de y no ponto final. Veja como ficaria:

cv2.line(frame, (25, linha_ROI), (1200, linha_ROI + 200), (0, 127, 255), 3)

Neste caso, a linha começará no mesmo ponto, mas terminará 200 pixels abaixo no eixo y, criando uma inclinação.

Você também precisará ajustar a condição dentro da função set_info(detec) para refletir a mudança na linha ROI. Atualmente, a condição verifica se a coordenada y do centroide do carro está num intervalo em torno da linha ROI. Com uma linha inclinada, você pode precisar de uma condição mais complexa que leve em conta tanto x quanto y.

Espero que essa dica possa lhe ajudar e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Entendi, muito obrigada, Armano! Em relaçao a alteração da condição da função set_info(), pensei em adequar um intervalo para a coordenada x, no entanto, muitos carros passam por pontos diferentes da coordenada x (temos duas faixas de carro) e colocando um offset muito alto, os mesmo carros são contados repetidamente, diminuindo a acurácia dos meus resultados. Você teria alguma sugestão? print do código no vscode

Bom dia, Vanessa! Peço desculpa pela demora em respondê-la.

Uma abordagem melhor seria considerar a direção do movimento dos carros ao tomar decisões de contagem. Isso pode ser feito comparando as posições atuais dos carros com suas posições anteriores. Aqui estão algumas sugestões para melhorar a detecção de carros:

A título de curiosidade, algumas dicas aqui listadas fogem um pouco do que é passado durante o curso, e pode ser um pouco complicado de implementar.

  1. Rastreamento de Objetos: Utilize um algoritmo de rastreamento de objetos, como o rastreamento de Kalman ou o algoritmo de rastreamento de Mean-Shift, para acompanhar os carros entre os quadros. Isso permitirá que você identifique se um carro já foi contado e evite contagens repetidas.

  2. Defina Regiões de Interesse (ROIs) Múltiplas: Em vez de usar uma única coordenada x como ponto de referência, você pode definir várias ROIs ao longo das faixas de carro. Isso permitirá que você detecte carros em diferentes partes da estrada e evite contagens repetidas. Por exemplo, você pode ter uma ROI para a faixa da esquerda e outra para a faixa da direita.

  3. Use Velocidade para Filtrar Detecções: Considere a velocidade dos carros para determinar se um carro está se movendo de uma faixa para outra. Se um carro estiver se movendo rapidamente da faixa da esquerda para a faixa da direita, ele pode ser contado uma única vez, mesmo que suas coordenadas x cruzem ambas as faixas.

  4. Implemente um Limiar de Distância: Em vez de usar um offset fixo para determinar se um carro foi detectado, você pode calcular a distância entre as detecções atuais e as detecções anteriores. Se a distância for pequena o suficiente, você pode considerar que é o mesmo carro.

  5. Filtre Detecções Falsas: Use técnicas de filtragem, como um filtro de Kalman, para remover detecções falsas e ruídos que possam afetar sua contagem de carros.

  6. Avalie Algoritmos de Detecção de Carros: Além das melhorias na lógica de contagem, considere usar um detector de carros mais robusto e preciso, como o YOLO (You Only Look Once) ou o Faster R-CNN, que podem ajudar a melhorar a detecção inicial de carros.

Lembre-se de que a abordagem exata a ser adotada dependerá das características específicas do seu cenário e dos dados de entrada. Experimente diferentes estratégias e ajuste os parâmetros conforme necessário para obter os melhores resultados de contagem de carros com alta precisão.

Bons estudos!