обнаружение объектов

обнаружение объектов
 avatar
unknown
python
2 months ago
2.8 kB
11
Indexable
import cv2
import numpy as np
import sys
try:
    from ultralytics import YOLO  # Мы будем использовать модель YOLO.
except ModuleNotFoundError:
    print("Ошибка: модуль «ультралитика» не найден. Пожалуйста, установите его, запустив команду «pip install ultralytics».")
    sys.exit(1)

# Установите модель YOLO (pre-trained COCO dataset ile)
try:
    model = YOLO("yolov8n.pt")
except Exception as e:
    print(f"Ошибка загрузки модели YOLO.: {e}")
    sys.exit(1)

# Включите камеру
cap = cv2.VideoCapture(0)
if not cap.isOpened():
    print("Ошибка: Не удалось открыть камеру..")
    sys.exit(1)

while True:
    ret, frame = cap.read()
    if not ret:
        print("Ошибка: изображение с камеры не получено..")
        break
    
    # обнаружение объектов
    results = model(frame)
    
    for result in results:
        for box in result.boxes:
            try:
                x1, y1, x2, y2 = map(int, box.xyxy[0])  # Координаты
                conf = box.conf[0]  # Güven skoru
                cls = int(box.cls[0])  # Сорт ID
                label = model.names.get(cls, "Неизвестный")  # имя объекта
                
                # Ширина и высота объекта
                width = x2 - x1
                height = y2 - y1
                
                # Цветовой анализ (нахождение среднего цвета)
                roi = frame[y1:y2, x1:x2]
                avg_color = np.mean(roi, axis=(0, 1)) if roi.size > 0 else [0, 0, 0]
                color_str = f"RGB({int(avg_color[2])}, {int(avg_color[1])}, {int(avg_color[0])})"
                
                # Чертежи и этикетки
                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
                cv2.putText(frame, f"{label} ({conf:.2f})", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
                cv2.putText(frame, f"Size: {width}x{height}", (x1, y1 + 15), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
                cv2.putText(frame, f"Color: {color_str}", (x1, y1 + 30), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
            except Exception as e:
                print(f"Ошибка: возникла проблема с обработкой информации об объекте. - {e}")
    
    cv2.imshow("Tracking System", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Editor is loading...
Leave a Comment