У меня проблема с графической визуализацией этого программного обеспечения для визуализации футбольного матча. Проблема связана со скоростью визуализации регионов, которые я оцениваю с помощью программного обеспечения Python с использованием pygame.
Скорость отображения низкая, вероятно, из-за альфашейпа. Я не знаю, какое альтернативное решение я могу использовать вместо подхода Alphashape, чтобы иметь плавное представление этого совпадения (10 кадров в секунду).
изображение показывает то, что я получил с помощью своей функции
изображение показывает, что я получил с помощью своей функции
p>
функция:
класс RegionsRenderer:
def init(self, window_width, window_height):
self.window_width = window_width
self.window_height = window_height
self.surface = pygame.Surface((window_width, window_height), pygame.SRCALPHA)
# Colori predefiniti con alpha
self.team_colors = {
'A': {
'fill': (0, 0, 255, 100), # Blu semi-trasparente
'border': (0, 0, 0, 255) # Bordo blu più scuro
},
'B': {
'fill': (255, 0, 0, 100), # Rosso semi-trasparente
'border': (0, 0, 0, 255) # Bordo rosso più scuro
}
}
# Parametri configurabili
self.alpha_value = 0.05
self.noise_scale = 0.25
self.border_width = 2
@lru_cache(maxsize=128)
def _generate_noise(self, points_shape):
"""Genera rumore casuale con caching per migliorare le performance."""
return np.random.normal(0, self.noise_scale, points_shape)
def _process_polygon(self, points_array):
"""Processa un insieme di punti per creare un poligono valido."""
if len(points_array) < 3:
return None
try:
# Aggiungi rumore cached per evitare la collinearità
noise = self._generate_noise(points_array.shape)
jittered_points = points_array + noise
# Prova prima con alphashape
alpha_shape = alphashape(jittered_points, alpha=self.alpha_value)
if isinstance(alpha_shape, (Polygon, MultiPolygon)):
return alpha_shape
except Exception:
try:
# Fallback a ConvexHull con opzioni ottimizzate
hull = ConvexHull(points_array, qhull_options='QJ Qs')
hull_points = points_array[hull.vertices]
return Polygon(hull_points)
except Exception:
return None
return None
def _draw_polygon(self, poly, fill_color, border_color):
"""Disegna un singolo poligono sulla superficie."""
if isinstance(poly, MultiPolygon):
polygons = list(poly.geoms)
else:
polygons = [poly]
for p in polygons:
points = [(int(x), int(y)) for x, y in p.exterior.coords]
if len(points) >= 3:
pygame.draw.polygon(self.surface, fill_color, points)
pygame.draw.polygon(self.surface, border_color, points, self.border_width)
def draw(self, screen, transformed_k_regions, player_teams, frame_idx):
"""Disegna tutte le k-regions per un frame."""
if frame_idx not in transformed_k_regions:
return False
# Pulisci la superficie prima di disegnare
self.surface.fill((0, 0, 0, 0))
current_regions = transformed_k_regions[frame_idx]
for player_id, points in current_regions.items():
team = player_teams[player_id]
colors = self.team_colors[team]
polygon = self._process_polygon(np.array(points))
if polygon:
self._draw_polygon(polygon, colors['fill'], colors['border'])
# Applica il risultato allo schermo
screen.blit(self.surface, (0, 0))
return True
Подробнее здесь: https://stackoverflow.com/questions/792 ... ualisation
Программное обеспечение для визуализации футбольных матчей ⇐ Python
Программы на Python
-
Anonymous
1732809959
Anonymous
У меня проблема с графической визуализацией этого программного обеспечения для визуализации футбольного матча. Проблема связана со скоростью визуализации регионов, которые я оцениваю с помощью программного обеспечения Python с использованием pygame.
Скорость отображения низкая, вероятно, из-за альфашейпа. Я не знаю, какое альтернативное решение я могу использовать вместо подхода Alphashape, чтобы иметь плавное представление этого совпадения (10 кадров в секунду).
изображение показывает то, что я получил с помощью своей функции
изображение показывает, что я получил с помощью своей функции
p>
функция:
класс RegionsRenderer:
def [b]init[/b](self, window_width, window_height):
self.window_width = window_width
self.window_height = window_height
self.surface = pygame.Surface((window_width, window_height), pygame.SRCALPHA)
# Colori predefiniti con alpha
self.team_colors = {
'A': {
'fill': (0, 0, 255, 100), # Blu semi-trasparente
'border': (0, 0, 0, 255) # Bordo blu più scuro
},
'B': {
'fill': (255, 0, 0, 100), # Rosso semi-trasparente
'border': (0, 0, 0, 255) # Bordo rosso più scuro
}
}
# Parametri configurabili
self.alpha_value = 0.05
self.noise_scale = 0.25
self.border_width = 2
@lru_cache(maxsize=128)
def _generate_noise(self, points_shape):
"""Genera rumore casuale con caching per migliorare le performance."""
return np.random.normal(0, self.noise_scale, points_shape)
def _process_polygon(self, points_array):
"""Processa un insieme di punti per creare un poligono valido."""
if len(points_array) < 3:
return None
try:
# Aggiungi rumore cached per evitare la collinearità
noise = self._generate_noise(points_array.shape)
jittered_points = points_array + noise
# Prova prima con alphashape
alpha_shape = alphashape(jittered_points, alpha=self.alpha_value)
if isinstance(alpha_shape, (Polygon, MultiPolygon)):
return alpha_shape
except Exception:
try:
# Fallback a ConvexHull con opzioni ottimizzate
hull = ConvexHull(points_array, qhull_options='QJ Qs')
hull_points = points_array[hull.vertices]
return Polygon(hull_points)
except Exception:
return None
return None
def _draw_polygon(self, poly, fill_color, border_color):
"""Disegna un singolo poligono sulla superficie."""
if isinstance(poly, MultiPolygon):
polygons = list(poly.geoms)
else:
polygons = [poly]
for p in polygons:
points = [(int(x), int(y)) for x, y in p.exterior.coords]
if len(points) >= 3:
pygame.draw.polygon(self.surface, fill_color, points)
pygame.draw.polygon(self.surface, border_color, points, self.border_width)
def draw(self, screen, transformed_k_regions, player_teams, frame_idx):
"""Disegna tutte le k-regions per un frame."""
if frame_idx not in transformed_k_regions:
return False
# Pulisci la superficie prima di disegnare
self.surface.fill((0, 0, 0, 0))
current_regions = transformed_k_regions[frame_idx]
for player_id, points in current_regions.items():
team = player_teams[player_id]
colors = self.team_colors[team]
polygon = self._process_polygon(np.array(points))
if polygon:
self._draw_polygon(polygon, colors['fill'], colors['border'])
# Applica il risultato allo schermo
screen.blit(self.surface, (0, 0))
return True
Подробнее здесь: [url]https://stackoverflow.com/questions/79234611/software-for-soccer-match-visualisation[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия