Skip to content

Instantly share code, notes, and snippets.

@samuellangajr
Created March 12, 2025 18:54
Show Gist options
  • Select an option

  • Save samuellangajr/aa7e4e39f2655c056fc36673b7bd5034 to your computer and use it in GitHub Desktop.

Select an option

Save samuellangajr/aa7e4e39f2655c056fc36673b7bd5034 to your computer and use it in GitHub Desktop.
Implemente uma função que gere um mapa de calor (heatmap) representando a densidade de tráfego em diferentes regiões de uma imagem. Assuma que você tem acesso a uma lista de coordenadas de veículos detectados
import numpy as np
import cv2
import seaborn as sns
import matplotlib.pyplot as plt
def gerar_mapa_calor(imagem, coordenadas_veiculos, tamanho_mapa=(500, 500), raio=15):
"""
Gera um mapa de calor baseado nas coordenadas dos veículos detectados.
Args:
imagem (ndarray): A imagem de tráfego (não utilizada diretamente, mas para fornecer contexto).
coordenadas_veiculos (list): Lista de coordenadas (x, y) dos veículos detectados.
tamanho_mapa (tuple): O tamanho da imagem de saída do mapa de calor (largura, altura).
raio (int): O raio em torno de cada coordenada para calcular a densidade.
Returns:
ndarray: A imagem gerada do mapa de calor.
"""
# Criar uma imagem em preto (preenchida com zeros)
mapa_calor = np.zeros(tamanho_mapa, dtype=np.float32)
# Para cada coordenada de veículo, aumentamos a densidade na área ao redor
for coord in coordenadas_veiculos:
x, y = coord
cv2.circle(mapa_calor, (x, y), raio, (1), -1) # Raio de influência do veículo
# Aplicar um filtro de suavização (blur) para suavizar as áreas de alta densidade
mapa_calor = cv2.GaussianBlur(mapa_calor, (15, 15), 0)
# Normalizar o mapa de calor
mapa_calor_normalizado = cv2.normalize(mapa_calor, None, 0, 255, cv2.NORM_MINMAX)
# Converter para imagem colorida (heatmap)
mapa_calor_colorido = cv2.applyColorMap(np.uint8(mapa_calor_normalizado), cv2.COLORMAP_JET)
return mapa_calor_colorido
# Exemplo de uso:
# Lista de coordenadas de veículos detectados (exemplo fictício)
coordenadas_veiculos = [(150, 200), (200, 250), (300, 300), (350, 400), (400, 450), (500, 500)]
# Gerar o mapa de calor
imagem_mapa_calor = gerar_mapa_calor(None, coordenadas_veiculos, tamanho_mapa=(500, 500), raio=15)
# Mostrar o mapa de calor
plt.figure(figsize=(8, 8))
plt.imshow(imagem_mapa_calor)
plt.title('Mapa de Calor - Densidade de Tráfego')
plt.axis('off')
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment