import matplotlib.pyplot as plt import pandas as pd import cv2 from ultralytics import YOLO from PIL import Image def visualize_detections(image_path, output_path): model = YOLO('yolov8s.pt') # You can change this to other YOLOv8 models as needed # Read the image image = cv2.imread(image_path) # Run YOLOv8 inference on the image results = model(image) # Process the results and draw bounding boxes for result in results: boxes = result.boxes.cpu().numpy() for box in boxes: x1, y1, x2, y2 = map(int, box.xyxy[0]) confidence = float(box.conf[0]) class_id = int(box.cls[0]) class_name = model.names[class_id] # Draw bounding box cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2) # Prepare label label = f"{class_name}" # Get label size (label_width, label_height), baseline = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 1) # Draw filled rectangle for label background cv2.rectangle(image, (x1, y1 - label_height - baseline), (x1 + label_width, y1), (0, 255, 0), cv2.FILLED) # Put label text cv2.putText(image, label, (x1, y1 - baseline), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1) # Save the output image cv2.imwrite(output_path, image) def visualize_segmentation(image, masks, output_file): #plt.imshow(image) for mask in masks: plt.imshow(mask, alpha=0.5) plt.axis('off') plt.savefig(output_file,bbox_inches='tight', pad_inches=0) plt.close() def create_summary_table(mapped_data, output_file): df = pd.DataFrame.from_dict(mapped_data, orient='index') df.to_csv(output_file)