Created
March 12, 2025 18:54
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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