11 KiB
Vendored
11 KiB
Vendored
In [ ]:
!pip install -q inference "supervision[assets]"In [ ]:
from supervision.assets import download_assets, VideoAssets
# Download a supervision video asset
path_to_video = download_assets(VideoAssets.PEOPLE_WALKING)In [ ]:
import supervision as sv
from supervision.assets import download_assets, VideoAssets
from inference.models.utils import get_roboflow_model
if __name__ == "__main__":
# Download the video asset from Supervision assets.
PATH_TO_VIDEO = download_assets(VideoAssets.PEOPLE_WALKING)
# Load a yolov8 nano model from roboflow.
model = get_roboflow_model("yolov8n-640")
# Create a frame generator and video info object from supervision utilities.
frame_generator = sv.get_video_frames_generator(PATH_TO_VIDEO)
# Yield a single frame from the generator.
frame = next(frame_generator)
# Run inference on our frame.
result = model.infer(frame)[0]
# Parse result into detections data model.
detections = sv.Detections.from_inference(result)
# Display the detections data model.
print(detections)In [ ]:
import supervision as sv
from supervision.assets import download_assets, VideoAssets
from inference.models.utils import get_roboflow_model
if __name__ == "__main__":
# Download the video asset from Supervision assets.
PATH_TO_VIDEO = download_assets(VideoAssets.PEOPLE_WALKING)
# Load a yolov8 nano model from roboflow.
model = get_roboflow_model("yolov8n-640")
# Initalize the bounding box frame annotator.
box_annotator = sv.BoundingBoxAnnotator()
# Create a frame generator object from video path.
frame_generator = sv.get_video_frames_generator(PATH_TO_VIDEO)
# Create a video info object from video path.
video_info = sv.VideoInfo.from_video_path(PATH_TO_VIDEO)
# Use a VideoSink context manager for saving frames of a video.
with sv.VideoSink(target_path="output.mp4", video_info=video_info) as sink:
# Iterate through frames yielded from the frame_generator.
for frame in frame_generator:
# Run inference on our frame.
result = model.infer(frame)[0]
# Parse the result into the detections data model.
detections = sv.Detections.from_inference(result)
# Apply bounding box to detections on a copy of the frame.
annotated_frame = box_annotator.annotate(
scene=frame.copy(),
detections=detections
)
# Write the annotated frame to the video sink.
sink.write_frame(frame=annotated_frame)