将分辨率大的图片分割成图片切片,然后对每一小图片切片进行模型预测,再将得到的结果进行合并。

import cv2 as cv
import supervision as sv
from ultralytics import YOLO

model_path=r'F:\python\yolov8\yolov8x.pt'
model=YOLO(model_path)
# 使用gpu计算
# model.cuda()
box_annotator=sv.BoundingBoxAnnotator()
# 语义分割注释
# mask_annotator=sv.MaskAnnotator()
label_annotator=sv.LabelAnnotator()

def callback(img_slice):
    results=model(img_slice)[0]
    return sv.Detections.from_ultralytics(results)
def process_img(img,index):
    slicer = sv.InferenceSlicer(callback=callback)
    detections=slicer(img)
    annotated_frame=box_annotator.annotate(img.copy(),detections)
    # annotated_frame=mask_annotator.annotate(img.copy(),detections)
    annotated_frame=label_annotator.annotate(annotated_frame,detections)
    return annotated_frame

sv.process_video(source_path='beach-1.mp4',target_path='beach_2_detected.mp4',callback=process_img)

 

 posted on 2024-07-22 20:05  会飞的金鱼  阅读(36)  评论(0)    收藏  举报