ref: replace project files

This commit is contained in:
2025-09-03 22:38:28 +03:00
parent da14ea4e42
commit b47e3978e1
13 changed files with 1 additions and 1 deletions

View File

@@ -0,0 +1,96 @@
#!/usr/bin/env python3
"""
Тестовый скрипт для проверки работы с координатами относительно центра изображения
"""
import numpy as np
from PIL import Image
import cv2
from autopilot import AutoPilot
def test_center_coordinates():
"""Тестирует работу с координатами относительно центра изображения"""
print("Тест координат относительно центра изображения...")
# Создаем тестовое изображение
width, height = 640, 480
test_image = np.zeros((height, width, 3), dtype=np.uint8)
# Добавляем некоторые объекты для отслеживания
cv2.circle(test_image, (width//2, height//2), 50, (255, 255, 255), -1) # Центр
cv2.circle(test_image, (100, 100), 20, (255, 0, 0), -1) # Левый верхний угол
cv2.circle(test_image, (width-100, height-100), 20, (0, 255, 0), -1) # Правый нижний угол
# Создаем второе изображение с небольшим смещением
test_image2 = np.zeros((height, width, 3), dtype=np.uint8)
cv2.circle(test_image2, (width//2 + 10, height//2 + 5), 50, (255, 255, 255), -1) # Смещенный центр
cv2.circle(test_image2, (110, 105), 20, (255, 0, 0), -1) # Смещенный левый верхний угол
cv2.circle(test_image2, (width-90, height-95), 20, (0, 255, 0), -1) # Смещенный правый нижний угол
# Конвертируем в PIL Image
pil_image1 = Image.fromarray(test_image)
pil_image2 = Image.fromarray(test_image2)
# Создаем автопилот
pilot = AutoPilot(initial_x=0.0, initial_y=0.0)
print(f"Размер изображения: {width}x{height}")
print(f"Ожидаемый центр: ({width//2}, {height//2})")
# Обрабатываем первое изображение
pilot.handle(pil_image1)
print(f"Центр изображения после первого кадра: {pilot.image_center}")
# Обрабатываем второе изображение
pilot.handle(pil_image2)
print(f"Центр изображения после второго кадра: {pilot.image_center}")
# Получаем состояние дрона
drone_state = pilot.get_drone_state()
print(f"Позиция дрона: ({drone_state['x']:.2f}, {drone_state['y']:.2f})")
print(f"Угол дрона: {drone_state['angle_degrees']:.1f}°")
print("\nАнализ отцентрированных координат:")
print("Ожидаемое смещение центра: (10, 5) пикселей")
print("Ожидаемое смещение левого верхнего угла: (10, 5) пикселей")
print("Ожидаемое смещение правого нижнего угла: (10, 5) пикселей")
print("Тест завершен!")
def test_keypoint_centering():
"""Тестирует отцентрирование ключевых точек"""
print("\nТест отцентрирования ключевых точек...")
# Создаем простое изображение с одной точкой
width, height = 100, 100
test_image = np.zeros((height, width, 3), dtype=np.uint8)
cv2.circle(test_image, (25, 25), 5, (255, 255, 255), -1) # Точка в (25, 25)
# Создаем второе изображение с той же точкой
test_image2 = np.zeros((height, width, 3), dtype=np.uint8)
cv2.circle(test_image2, (25, 25), 5, (255, 255, 255), -1)
# Конвертируем в PIL Image
pil_image1 = Image.fromarray(test_image)
pil_image2 = Image.fromarray(test_image2)
# Создаем автопилот
pilot = AutoPilot(initial_x=0.0, initial_y=0.0)
print(f"Размер изображения: {width}x{height}")
print(f"Центр изображения: ({width//2}, {height//2}) = (50, 50)")
print(f"Позиция точки: (25, 25)")
print(f"Ожидаемые отцентрированные координаты: (25-50, 25-50) = (-25, -25)")
# Обрабатываем изображения
pilot.handle(pil_image1)
pilot.handle(pil_image2)
drone_state = pilot.get_drone_state()
print(f"Результат: позиция дрона ({drone_state['x']:.2f}, {drone_state['y']:.2f})")
print("Тест завершен!")
if __name__ == "__main__":
test_center_coordinates()
test_keypoint_centering()