Перейти к содержанию
    

AiroSerf

Новичок
  • Постов

    1
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Не могу разобраться как обращаться к координатам объекта. Раньше использовал cv2 и обычные шаблоны для нахождения объектов на изображении или видео. Использовал вот такие функции: for i in range(1, screen1+1): template1 = cv2.imread(f'{i}w.png', 0) w1, h1 = template1.shape[::-1] screen1_templates1.append((template1, w1, h1)) img_rgb1 = cv2.cvtColor(np.array(base_screen1), cv2.COLOR_RGB2BGR) img_gray1 = cv2.cvtColor(img_rgb1, cv2.COLOR_BGR2GRAY) res1 = [] locs1 = [] for template1, w1, h1 in screen1_templates1: result1 = cv2.matchTemplate(img_gray1, template1, cv2.TM_CCOEFF_NORMED) loc1 = np.where(result1 >= 0.74) res1.append(result1) locs1.append(loc1) for i in range(len(screen1_templates1)): for pt in zip(*locs1[i][::-1]): x1 = int(pt[0]) y1 = int(pt[1]) cv2.rectangle(base_screen_np1, (x1, y1), (x1 + screen1_templates1[i][1], y1 + screen1_templates1[i][2]), (0, 255, 0), 2) cv2.putText(base_screen_np1, str(i + 1), (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) Тем самым я мог обращаться к x, y и с ними взаимодействовать. К примеру выводить координаты местонахождения объектов. Но начав разбираться с YOLO такой возможности не нашел. Код рабочий Объект находит на экране, но я не могу вывести его местонахождения x, y и ни как с ним не могу взаимодействовать. import cv2 import numpy as np from PIL import ImageGrab import matplotlib.pyplot as plt from ultralytics import YOLO import time # Загрузка модели YOLO model = YOLO(r'C:\Users\aloxa\PycharmProjects\YOLOv8\runs\detect\train\weights\best.pt') listening_start_time3 = 0 # Функция для захвата экрана def grab_screen(): screen = np.array(ImageGrab.grab(bbox=(0, 0, 850, 640))) screen = cv2.cvtColor(screen, cv2.COLOR_RGB2BGR) return screen # Бесконечный цикл для обнаружения объектов в реальном времени while True: screen_img = grab_screen() # Выполнение обнаружения объектов на изображении экрана results = model(screen_img, imgsz=640, iou=0.4, conf=0.25, verbose=True) annatated_frame = results[0].plot() # Построение аннотированного кадра с уменьшенным шрифтом annotated_frame = results[0].plot(font_size=10) # Указываем желаемый размер шрифта annotated_frame = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB) # Отображение аннотированного кадра cv2.imshow('Annotated Screen', annotated_frame) # Изменение размера окна отображения cv2.namedWindow('Annotated Screen', cv2.WINDOW_NORMAL) cv2.resizeWindow('Annotated Screen', 850, 640) # Проверка нажатия клавиши 'q' для выхода из цикла if cv2.waitKey(1) & 0xFF == ord('q'): break # Закрытие всех окон OpenCV cv2.destroyAllWindows()
×
×
  • Создать...