Escolar Documentos
Profissional Documentos
Cultura Documentos
FUNCIONA OK?
Medição De Distância Em Tempo Real Entre Objetos Usando Visão
Computacional
O código abaixo é um exemplo de como utilizar o OpenCV em conjunto com o Python para detectar
cachorros e gatos em tempo real e calcular a distância entre eles. As constantes definidas no início
do código são utilizadas posteriormente para desenhar retângulos e linhas na imagem, bem como
para escrever texto.
O código utiliza a função CascadeClassifier do OpenCV para carregar classificadores pré-treinados
para detecção de cachorros e gatos. Em seguida, é realizada a detecção dos objetos na imagem
utilizando a função detectMultiScale.
Além disso, o código apresenta funções para desenhar retângulos e linhas na imagem, bem como
para calcular a distância euclidiana entre os centros dos objetos.
Em resumo, o código mostra como é possível utilizar o OpenCV e o Python para realizar tarefas de
visão computacional em tempo real, tais como a detecção de objetos e o cálculo de distância entre
eles.
import cv2
import numpy as np
# Constantes
FONT = cv2.FONT_HERSHEY_SIMPLEX
FONT_SCALE = 1
FONT_COLOR = (0, 255, 0)
THICKNESS = 2
# Loop principal
while True:
# Lê o frame da câmera
ret, frame = cap.read()
Cálculos
No código apresentado, os cálculos utilizados para medir a distância entre os objetos detectados são
relativamente simples.
Primeiramente, é calculado o ponto central do retângulo que envolve o objeto detectado pela função
CascadeClassifier do OpenCV. Em seguida, é calculada a distância euclidiana entre os pontos centrais
dos objetos, utilizando a função distance do módulo math. Por fim, é exibido na tela o valor da
distância em pixels.
O cálculo da distância euclidiana entre os pontos centrais dos objetos é realizado utilizando a função
"math.dist".
Essa função é responsável por calcular a distância euclidiana entre dois pontos em um espaço
bidimensional, a partir de suas coordenadas. Nesse caso, as coordenadas dos pontos centrais dos
objetos detectados são utilizadas como entrada para a função. A distância euclidiana é uma medida
direta da distância entre dois pontos no espaço e é calculada a partir do teorema de Pitágoras. A
distância calculada é expressa em pixels, e pode ser convertida para outras unidades, como
centímetros, caso seja necessário, através de uma conversão simples, utilizando-se a resolução da
imagem e a escala de conversão.
Cálculo da distância euclidiana entre os pontos centrais dos objetos, utilizando a função "math.dist":
distance = math.dist((center_x1, center_y1), (center_x2, center_y2))
Bibliotecas
A biblioteca "numpy" é utilizada para trabalhar com arrays multidimensionais em Python, permitindo
a execução de operações matemáticas de forma eficiente. Essa biblioteca é muito utilizada em
processamento de imagens, já que uma imagem pode ser tratada como uma matriz de pixels.
A biblioteca "cv2", por sua vez, é uma das bibliotecas mais utilizadas em processamento de imagens
em Python. Ela oferece uma série de funções para leitura, manipulação e exibição de imagens, além
de ferramentas para detecção de objetos e reconhecimento de padrões em imagens. A combinação
dessas duas bibliotecas é bastante comum em projetos de processamento de imagens em Python.
(Arrays multidimensionais)
também conhecidos como tensores, são estruturas de dados que permitem armazenar e manipular
dados em múltiplas dimensões. Eles são usados em muitos campos da computação, incluindo
processamento de imagens, aprendizado de máquina e ciência de dados.
Em Python, a biblioteca NumPy fornece suporte para trabalhar com arrays multidimensionais de
forma eficiente e conveniente. Os arrays multidimensionais são representados como matrizes, onde
cada elemento é identificado por um conjunto de índices que correspondem às suas coordenadas na
matriz.
Por exemplo, uma matriz bidimensional pode ser representada como um array com duas dimensões
(linhas e colunas), enquanto uma imagem colorida pode ser representada como um array
tridimensional com três dimensões (altura, largura e canal de cor). O uso de arrays multidimensionais
permite a execução de operações matemáticas de forma eficiente em grandes quantidades de
dados.
Melhorias futuras
é possível explorar outras técnicas de visão computacional para melhorar a precisão da medição da
distância, como a estimação de profundidade por meio de duas câmeras.