import cv2 from websocket import create_connection import win32file import numpy as np from ultralytics import YOLO # object classes classNames = ["person", "bicycle", "car", "motorbike", "aeroplane", "bus", "train", "truck", "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair", "sofa", "pottedplant", "bed", "diningtable", "toilet", "tvmonitor", "laptop", "mouse", "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink", "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush" ] def handle_connection(pipe): print("Pipe connected!") data = win32file.ReadFile(pipe, 640*480*3)[1] if not data: return nparr = np.frombuffer(data, np.uint8) nparr = nparr.reshape((480, 640, 3)) # frame = cv2.imdecode(nparr, cv2.IMREAD_COLOR) frame = cv2.cvtColor(nparr, cv2.COLOR_BGR2RGB) raise ValueError("There is no value running this application further") # Load YOLO model model = YOLO('yolov8s.pt') # Load an official Detect model # Open webcam cap = cv2.VideoCapture(0) cap.set(3, 640) cap.set(4, 480) while cap.isOpened(): ret, frame = cap.read() frame = cv2.resize(frame, (640, 480)) if not ret: break # Perform object detection results = model.track(frame, persist=True) for r in results: lines = "" boxes = r.boxes for box in boxes: if box.cls[0].item() == 0 and not box.id is None: # bounding box id = box.id.int().cpu().tolist() x1, y1, x2, y2 = box.xyxy[0] x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2) # convert to int values # put box in cam cv2.rectangle(frame, (x1, y1), (x2, y2), (255, 0, 255), 3) # class name cls = int(box.cls[0]) # object details org = [x1, y1] org2 = [x1, y1+50] font = cv2.FONT_HERSHEY_SIMPLEX fontScale = 1 color = (255, 0, 0) color_w = (255, 255, 255) thickness = 2 cv2.putText(frame, classNames[cls], org, font, fontScale, color, thickness) cv2.putText(frame, str(id), org2, font, fontScale, color_w, thickness) lines += f"{id} {x1}:{y1} {x2}:{y2}\n" cv2.imshow('Webcam', frame) if cv2.waitKey(1) == ord('q'): break cap.release() cv2.destroyAllWindows()