# def process_image(img): # results = detect_solar_panel(img) # sections = [] # for result in results: # result: Results # # print(result) # try: # boxes = result.boxes.xyxy[0].tolist() # # Unpack boxes # x1, y1, x2, y2 = boxes # sections.append(((int(x1), int(y1), int(x2), int(y2)), f"{section_labels[0]} Bounding Box")) # #Create 4 centroids around the true centroid shifted by a delta value # delta = 0.3 # delta_x = (x2 - x1) * delta # delta_y = (y2 - y1) * delta # x_centroid = (x1 + x2) / 2 # y_centroid = (y1 + y2) / 2 # xtop_centroid = x_centroid # ytop_centroid = y_centroid + delta_y # xright_centroid = x_centroid + delta_x # yright_centroid = y_centroid # xbottom_centroid = x_centroid # ybottom_centroid = y_centroid - delta_y # xleft_centroid = x_centroid - delta_x # yleft_centroid = y_centroid # sam_mask, sam_scores = sam.segment(img, [[ # [xtop_centroid, ytop_centroid], # [xright_centroid, yright_centroid], # [xbottom_centroid, ybottom_centroid], # [xleft_centroid, yleft_centroid] # ]]) # squeezed_sam_mask_tensor = sam_mask[0].squeeze() # squeezed_sam_scores_tensor = sam_scores[0].squeeze() # print(f"sqeezed sam mask shape {squeezed_sam_mask_tensor.shape}") # print(f"sqeezed sam scores shape {squeezed_sam_scores_tensor.shape}") # for i in range(0, squeezed_sam_mask_tensor.shape[0]): # flat_mask = squeezed_sam_mask_tensor[i].numpy() # sections.append((flat_mask, f"{section_labels[0]} Mask {i} - Score: {squeezed_sam_scores_tensor[i]}")) # i += 1 # except IndexError as e: # print(f"Error processing image: {e}, probably no boxes.") # return (img, sections)