Невозможно отслеживать баскетбол, как это исправить?Python

Программы на Python
Anonymous
Невозможно отслеживать баскетбол, как это исправить?

Сообщение Anonymous »


Пытаюсь отследить баскетбольный мяч во время видео, это всего лишь часть кода, потому что я также пытаюсь запечатлеть игроков... и эта часть работает нормально.

У меня есть файл config.py со всеми путями к важным файлам, включая мой специально обученный набор данных .WEIGHTS и .NAMES (баскетбольные мячи и сделанные корзины). С файлами проблем нет, но я просто не могу отслеживать баскетбол с помощью этого кода.

Что случилось?
ПОЛЬЗОВАТЕЛЬСКИЙ БЛОК ДЛЯ БАСКЕТБОЛА , если custom_yolo: если YOLO_FRAMEWORK == "tf": # используем модель yolo для прогнозирования данных изображения custom_pred_bbox = custom_yolo.predict(image_data) # изменим форму наших данных, чтобы они были в правильной форме для обработки custom_pred_bbox = [tf.reshape(x, (-1, tf.shape(x)[-1])) для x в custom_pred_bbox] custom_pred_bbox = tf.concat(custom_pred_bbox, axis=0) # получаем ящики на основе порога custom_bboxes = postprocess_boxes(custom_pred_bbox, original_frame, input_size, 0,3) # custom_bboxes = nms(custom_bboxes, iou_threshold, метод='nms') # извлечение bbox в поля (x, y, ширина, высота), оценки и имена custom_boxes, custom_scores, custom_names = [], [], [] для bbox в custom_bboxes: если len(Custom_track_only) != 0 и NUM_CUSTOM_CLASS[int(bbox[5])] в Custom_track_only или len(Custom_track_only) == 0: custom_boxes.append([bbox[0].astype(int), bbox[1].astype(int), bbox[2].astype(int)-bbox[0].astype(int), bbox[3]. astype(int)-bbox[1].astype(int)]) custom_scores.append(bbox[4]) custom_names.append(NUM_CUSTOM_CLASS[int(bbox[5])]) # Получите все обнаружения для данного кадра. custom_boxes = np.array(custom_boxes) custom_names = np.array(custom_names) custom_scores = np.array(custom_scores) # обратите внимание на корзину и баскетбольный объект, набравшие наибольшее количество очков в каждом кадре high_scoring_basketball = 0 баскетбольный_бокс = Нет баскетбольный_центр = Нет high_scoring_made_basket = 0 made_basket_box = Нет для меня, bbox в перечислении (custom_bboxes): # перебираем каждую ограничивающую рамку, чтобы получить «лучший» кадр # мы делаем это, потому что иногда наша модель обнаруживает два, а мы знаем, что их может быть только один имя = пользовательские_имена[я] счет = раунд (custom_scores, 3) если имя == 'баскетбол': если счет > наивысший_скоринг_баскетбола: high_scoring_basketball = счет баскетбольный_бокс = bbox if name == 'сделанная корзина': если балл > 0,85 и балл > high_scoring_made_basket: high_scoring_made_basket = оценка made_basket_box = bbox # если он увидит баскетбольный мяч, поставьте на него коробку и отметьте центр (для владения) если баскетбольный_бокс не имеет значения «Нет»: cv2.rectangle(original_frame, (int(basketball_box[0]), int(basketball_box[1])), (int(basketball_box[2]), int(basketball_box[3])), (0, 0, 255), 1) cv2.rectangle(original_frame, (int(basketball_box[0]), int(basketball_box[1] - 30)), (int(basketball_box[0]) + (10) * 17, int(basketball_box[1])), (0, 0, 255), -1) cv2.putText(исходный_фрейм, "баскетбол" + "-" + str(наивысший_скоринг_баскетбола), (int(basketball_box[0]), int(basketball_box[1] - 10)), 0, 0,5, (255, 255, 255), 1) баскетбольный_центр = ((баскетбольный_бокс[2] + баскетбольный_бокс[0]) / 2, (баскетбольная_коробка[3] + баскетбольная_коробка[1]) / 2) если made_basket_box не имеет значения None: # если есть готовая корзина, поместите в нее коробку cv2.rectangle(original_frame, (int(made_basket_box[0]), int(made_basket_box[1])), (int(made_basket_box[2]), int(made_basket_box[3])), (0,255,0), 1) cv2.rectangle(original_frame, (int(made_basket_box[0]), int(made_basket_box[1]-30)), (int(made_basket_box[0])+(15)*17, int(made_basket_box[1])), (0,255,0), -1) cv2.putText(original_frame, "made-basket" + " " + str(highest_scoring_made_basket),(int(made_basket_box[0]), int(made_basket_box[1]-10)),0, 0.6, (0,0,0 ),1) если made_basket_frames == 0: # если это первый кадр в последовательности made_basket_first_frame = счетчик кадров # увеличиваем счетчик созданных рамок корзины made_basket_frames += 1 # если было 3 последовательных кадра И мы еще не отметили корзину, давайте ее посчитаем! если made_basket_frames >= 3 и не корзина_marked: корзина_маркед = Истина корзина_frame_list.append(made_basket_first_frame) если владение: # записать, какая "команда" забила корзину корзины_dict[владение] += 1 # если нет сделанной корзины, убедитесь, что счетчик сделанной корзины равен нулю еще: # нет готовой корзины made_basket_frames = 0 # Через 60 кадров после сделанной корзины мы можем сбросить флаг «отмеченной корзины» на False # по сути это означает, что мы снова начинаем искать готовые корзины если корзина_маркирована и счетчик кадров > корзина_frame_list[-1] + 60: корзина_маркед = Ложь

Вернуться в «Python»