import cv2 def resize_image(img, scale_percent) : # Calculate new size width = int(img.shape[1] * scale_percent / 100) height = int(img.shape[0] * scale_percent / 100) dim = (width, height) # Resize image resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA) return resized def draw_box(img, result, class_list) : # Get information from result xyxy= result.boxes.xyxy.numpy() confidence= result.boxes.conf.numpy() class_id= result.boxes.cls.numpy().astype(int) # Get Class name class_name = [class_list[x] for x in class_id] # Pack together for easy use sum_output = list(zip(class_name, confidence,xyxy)) # Copy image, in case that we need original image for something out_image = img.copy() for run_output in sum_output : # Unpack label, con, box = run_output # Choose color box_color = (0, 0, 255) text_color = (255,255,255) # Draw object box first_half_box = (int(box[0]),int(box[1])) second_half_box = (int(box[2]),int(box[3])) cv2.rectangle(out_image, first_half_box, second_half_box, box_color, 2) # Create text text_print = '{label} {con:.2f}'.format(label = label, con = con) # Locate text position text_location = (int(box[0]), int(box[1] - 10 )) # Get size and baseline labelSize, baseLine = cv2.getTextSize(text_print, cv2.FONT_HERSHEY_SIMPLEX, 1, 2) # Draw text's background cv2.rectangle(out_image , (int(box[0]), int(box[1] - labelSize[1] - 10 )) , (int(box[0])+labelSize[0], int(box[1] + baseLine-10)) , box_color , cv2.FILLED) # Put text cv2.putText(out_image, text_print ,text_location , cv2.FONT_HERSHEY_SIMPLEX , 1 , text_color, 2 ,cv2.LINE_AA) return out_image