ultralytics
预测模式#
预测模式:释放模型对真实世界数据的预测能力。
import set_env
预测模式的主要功能
兼容多种数据源:无论您的数据是单个图像、图像集合、视频文件还是实时视频流,预测模式都能满足您的需求。
流媒体模式: 使用流功能生成具有内存效率的
Results
对象。通过设置stream=True
在预测器的调用方法中。批处理:批量处理:能够一次性处理多个图像或视频帧,进一步加快推理时间。
易于集成:凭借灵活的应用程序接口,可轻松与现有数据管道和其他软件组件集成。
Ultralytics YOLO 模型返回 Python Results
对象,或内存效率高的 Python Results
当 stream=True
会在推理过程中传递给模型:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True) # return a generator of Results objects
# Process results generator
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk
推理源#
YOLOv11 可以处理不同种类的输入源进行推理,如下表所示。这些来源包括静态图像、视频流和各种数据格式。表格还指出了每种来源是否可以在带有 stream=True
参数的流模式下使用 ✅。流模式对于处理视频或直播非常有用,因为它会创建一个结果生成器,而不是将所有帧加载到内存中。
小技巧
在处理长视频或大型数据集时,使用stream=True
可以高效地管理内存。当stream=False
时,所有帧或数据点的结果都存储在内存中,这可能会导致内存快速增加,并在输入较大时引发内存不足错误。相比之下,stream=True
采用生成器方式,仅保留当前帧或数据点的结果在内存中,显著降低了内存消耗,并避免了内存不足的问题。
数据源 |
示例 |
类型 |
备注 |
---|---|---|---|
图像 |
|
|
单个图像文件。 |
URL |
|
|
图像的URL。 |
屏幕截图 |
|
|
截取屏幕截图。 |
PIL |
|
|
HWC格式,具有RGB通道。 |
|
|
HWC格式,具有BGR通道,像素值为 |
|
numpy |
|
|
HWC格式,具有BGR通道,像素值为 |
torch |
|
|
BCHW格式,具有RGB通道,像素值为 |
CSV |
|
|
包含图像、视频或目录路径的CSV文件。 |
视频 ✅ |
|
|
格式为MP4、AVI等的视频文件。 |
目录 ✅ |
|
|
包含图像或视频的目录路径。 |
Glob模式 ✅ |
|
|
用于匹配多个文件的Glob模式。使用 |
YouTube ✅ |
|
|
YouTube视频的URL。 |
流媒体 ✅ |
|
|
流媒体协议的URL,例如RTSP、RTMP、TCP或IP地址。 |
多路流媒体 ✅ |
|
|
|
Webcam ✅ |
|
|
要进行推理的连接摄像头设备的索引。 |
下面是使用每种源类型的代码示例:
在图像上推理
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects
将当前屏幕内容作为截图进行推理。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define current screenshot as source
source = "screen"
# Run inference on the source
results = model(source) # list of Results objects
通过URL远程托管的图像或视频上运行推理。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"
# Run inference on the source
results = model(source) # list of Results objects
使用Python图像库(PIL)打开的图像上运行推断。
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Open an image using PIL
source = Image.open("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
使用 OpenCV 打开的图像上运行推断。
import cv2
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
对以numpy数组表示的图像进行推理。
import numpy as np
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")
# Run inference on the source
results = model(source) # list of Results objects
对以 PyTorch 张量表示的图像进行推理。
import torch
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Run inference on the source
results = model(source) # list of Results objects
在CSV文件中列出的一系列图像、URL、视频和目录上运行推理。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"
# Run inference on the source
results = model(source) # list of Results objects
对视频文件进行推理。通过使用 stream=True
,你可以创建生成器来生成结果对象,从而减少内存使用量。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to video file
source = "path/to/video.mp4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
对目录中的所有图像和视频进行推理。要捕获子目录中的图像和视频,请使用通配符模式,例如 path/to/dir/**/*
。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to directory containing images and videos for inference
source = "path/to/dir"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
对符合带有 *
字符的通配符(glob)表达式的所有图像和视频执行推理。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"
# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
在YouTube视频上运行推理。通过使用 stream=True
,你可以创建 Results 对象的生成器来减少长视频的内存占用。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
使用流模式通过RTSP、RTMP、TCP或IP地址协议对实时视频流进行推理。如果只提供一个流,模型将以1的批处理大小运行推理。对于多个流,可以使用.streams
文本文件执行批量推理,其中批处理大小由提供的流的数量决定(例如,8个流对应批处理大小为8)。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4" # RTSP, RTMP, TCP, or IP streaming address
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
对于单流使用,批处理大小默认设置为1
,这样可以高效地实时处理视频流。
要同时处理多个视频流,请使用包含流媒体源的 .streams
文本文件。模型将运行批处理推理,其中批处理大小等于流的数量。这种设置能够高效地并行处理多个输入。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams" # *.streams text file with one streaming address per line
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
.streams
文本文件例子
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
文件中的每一行代表一个流媒体源,使得你能够同时监控并对多个视频流进行推断。
您可以通过对特定摄像头的索引传递给 source
,在连接的相机设备上运行推断。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on the source
results = model(source=0, stream=True) # generator of Results objects
推理参数#
model.predict()
函数在推理时接受多个参数,这些参数可以用来覆盖默认设置:
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)
以下是翻译后的内容:
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
|
|
指定推理的数据源。可以是图像路径、视频文件、目录、URL或实时流的设备ID。支持多种格式和来源,使应用在不同输入类型上具有灵活性。 |
|
|
|
设置检测的最小置信度阈值。低于此阈值的检测结果将被忽略。调整此值有助于减少误报。 |
|
|
|
交并比 (IoU) 非极大值抑制 (NMS) 的阈值。较低的值通过消除重叠框来减少检测数量,有助于减少重复项。 |
|
|
|
定义推理的图像大小。可以是一个整数 |
|
|
|
启用半精度(FP16)推理,可以在支持的GPU上加速模型推理,对准确性的影响很小。 |
|
|
|
指定推理的设备(例如, |
|
|
|
每张图像允许的最大检测数量。限制模型在单次推理中可以检测到的对象总数,防止在密集场景中产生过多输出。 |
|
|
|
视频输入的帧步幅。允许跳过视频中的帧以加快处理速度,但会牺牲时间分辨率。值为1时处理每一帧,更高值则跳过帧。 |
|
|
|
确定是否为视频流排队传入帧。如果为 |
|
|
|
激活推理期间模型特征的可视化,提供关于模型“看到”内容的洞察。对于调试和模型解释非常有用。 |
|
|
|
启用测试时数据增强(TTA),可能提高检测的鲁棒性,但会牺牲推理速度。 |
|
|
|
启用类无关的非极大值抑制(NMS),合并不同类的重叠框。在多类检测场景中非常有用,其中类重叠是常见的情况。 |
|
|
|
过滤预测结果为一组类ID。只有属于指定类的检测结果才会返回。在多类检测任务中聚焦于相关对象时非常有用。 |
|
|
|
如果模型中可用,使用高分辨率分割掩码。这可以增强分割任务的掩码质量,提供更精细的细节。 |
|
|
|
指定从中提取特征向量或嵌入的层。对于下游任务如聚类或相似性搜索非常有用。 |
|
|
|
保存预测输出的项目目录名称。如果启用了 |
|
|
|
预测运行的名称。用于在项目文件夹中创建子目录,如果启用了 |
可视化参数
参数 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
|
|
如果为 |
|
|
|
启用将带标注的图片或视频保存到文件。对于文档记录、进一步分析或分享结果非常有用。使用 CLI 时默认值为 True,而在 Python 中使用则默认值为 False。 |
|
|
|
处理视频时,将单个帧保存为图片。适用于提取特定帧或进行详细的逐帧分析。 |
|
|
|
将检测结果保存在文本文件中,格式为 |
|
|
|
在保存的文本文件中包含置信度分数。增强了后处理和分析可用的细节。 |
|
|
|
保存检测区域的裁剪图片。适用于数据集增强、分析或创建针对特定对象的专注数据集。 |
|
|
|
在视觉输出中显示每个检测的标签。立即了解检测到的对象。 |
|
|
|
在标签旁边显示每个检测的置信度分数。提供模型对每个检测的信心见解。 |
|
|
|
绘制检测对象的边界框。对于图像或视频帧中对象的视觉识别和定位至关重要。 |
|
|
|
指定边界框的线宽。如果为 |
图像和视频格式#
YOLOv11支持多种图像和视频格式,具体请参见ultralytics/data/utils.py。下表列出了有效的后缀和示例预测命令。
图像#
下表包含有效的Ultralytics图像格式。
!!! 注意
HEIC图像仅支持推理,不支持训练。
图像后缀 |
示例预测命令 |
参考 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
视频文件格式#
下表列出了Ultralytics支持的有效视频格式。
视频文件后缀 |
示例预测命令 |
参考链接 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
处理结果#
所有 Ultralytics 的 predict()
调用都会返回 Results
对象的列表:
from ultralytics import YOLO
# 加载预训练的YOLOv11n模型
model = YOLO("yolo11n.pt")
# 在一张图片上运行推断
results = model("bus.jpg") # 包含1个Results对象的列表
results = model(["bus.jpg", "zidane.jpg"]) # 包含2个Results对象的列表
Results
对象具有以下属性:
属性 |
类型 |
描述 |
---|---|---|
|
|
原始图像,以 numpy 数组形式表示。 |
|
|
原始图像的形状,格式为 (高度, 宽度)。 |
|
|
包含检测边界框的 Boxes 对象。 |
|
|
包含检测掩码的 Masks 对象。 |
|
|
包含每个类别分类任务概率的 Probs 对象。 |
|
|
包含每个对象检测关键点的 Keypoints 对象。 |
|
|
包含定向边界框的 OBB 对象。 |
|
|
一个字典,包含每张图像的预处理、推理和后处理速度(以毫秒为单位)。 |
|
|
一个包含类别名称的字典。 |
|
|
图像文件的路径。 |
Results
对象具有以下方法:
方法 |
返回类型 |
描述 |
---|---|---|
|
|
更新 Results 对象的 boxes、masks 和 probs 属性。 |
|
|
返回一个所有张量都在 CPU 内存中的 Results 对象副本。 |
|
|
返回一个所有张量都是 numpy 数组的 Results 对象副本。 |
|
|
返回一个所有张量都在 GPU 内存中的 Results 对象副本。 |
|
|
返回一个在指定设备和数据类型上的所有张量都在 Results 对象副本。 |
|
|
返回一个具有相同图像、路径和名称的新 Results 对象。 |
|
|
绘制检测结果。返回一个标注图像的 numpy 数组。 |
|
|
将标注结果展示到屏幕上。 |
|
|
将标注结果保存到文件中。 |
|
|
返回每个任务的日志字符串。 |
|
|
将预测结果保存到一个 txt 文件中。 |
|
|
将裁剪后的预测结果保存到 |
|
|
将对象转换为 JSON 格式。 |
框#
Boxes
对象可用于索引、操作以及将边界框转换为不同的格式。
from ultralytics import YOLO
# 加载预训练的YOLOv11n模型
model = YOLO("yolo11n.pt")
# 在图像上运行推理
results = model("bus.jpg") # 结果列表
# 查看结果
for r in results:
print(r.boxes) # 打印包含检测边界框的Boxes对象
以下是Boxes
类方法和属性的表格,包括它们的名称、类型和描述:
名称 |
类型 |
描述 |
---|---|---|
|
方法 |
将对象移动到CPU内存。 |
|
方法 |
将对象转换为numpy数组。 |
|
方法 |
将对象移动到CUDA内存。 |
|
方法 |
将对象移动到指定的设备。 |
|
属性 ( |
以xyxy格式返回框。 |
|
属性 ( |
返回框的置信度值。 |
|
属性 ( |
返回框的类别值。 |
|
属性 ( |
返回框的跟踪ID(如果有)。 |
|
属性 ( |
以xywh格式返回框。 |
|
属性 ( |
返回原始图像尺寸标准化后的xyxy格式框。 |
|
属性 ( |
返回原始图像尺寸标准化后的xywh格式框。 |
掩码#
Masks
对象可用于索引、操作和将掩码转换为分割。
from ultralytics import YOLO
# 加载预训练的YOLO11n-seg分割模型
model = YOLO("yolo11n-seg.pt")
# 对一张图片进行推理
results = model("bus.jpg") # 结果列表
# 查看结果
for r in results:
print(r.masks) # 打印包含检测到的实例遮罩的Masks对象
以下是 Masks
类的方法与属性的表格,包括它们的名称、类型和描述:
名称 |
类型 |
描述 |
---|---|---|
|
方法 |
返回位于 CPU 内存中的掩码张量。 |
|
方法 |
将掩码张量转换为 numpy 数组。 |
|
方法 |
返回位于 GPU 内存中的掩码张量。 |
|
方法 |
返回具有指定设备和数据类型的掩码张量。 |
|
属性 ( |
表示为张量的归一化段列表。 |
|
属性 ( |
表示为张量的像素坐标段列表。 |
关键点#
Keypoints
对象可用于索引、操作和规范化坐标。
from ultralytics import YOLO
# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")
# Run inference on an image
results = model("bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypoints
以下是 Keypoints
类方法和属性的表格,包括它们的名称、类型和描述:
名称 |
类型 |
描述 |
---|---|---|
|
方法 |
返回在 CPU 内存中的关键点张量。 |
|
方法 |
返回作为 numpy 数组的关键点张量。 |
|
方法 |
返回在 GPU 内存中的关键点张量。 |
|
方法 |
返回具有指定设备和数据类型的关键点张量。 |
|
属性 ( |
一个表示为张量的归一化关键点列表。 |
|
属性 ( |
一个表示为张量的像素坐标中的关键点列表。 |
|
属性 ( |
如果可用,则返回关键点的置信度值,否则为 None。 |
Probs#
Probs
对象可用于索引,获取分类的 top1
和 top5
索引及分数。
from ultralytics import YOLO
# 加载一个预训练的 YOLOv11n-cls 分类模型
model = YOLO("yolo11n-cls.pt")
# 在一张图片上运行推理
results = model("bus.jpg") # 结果列表
# 查看结果
for r in results:
print(r.probs) # 打印包含检测到的类别概率的 Probs 对象
以下是对 Probs
类方法和属性的总结表:
名称 |
类型 |
描述 |
---|---|---|
|
方法 |
返回一个位于CPU内存中的probs张量的副本。 |
|
方法 |
将probs张量转换为NumPy数组并返回其副本。 |
|
方法 |
返回一个位于GPU内存中的probs张量的副本。 |
|
方法 |
返回指定设备和数据类型下的probs张量的副本。 |
|
属性( |
最可能类别的索引。 |
|
属性( |
前五个最可能类别的索引列表。 |
|
属性( |
最可能类别的置信度。 |
|
属性( |
前五个最可能类别的置信度。 |
OBB#
OBB对象可用于索引、操作和转换方向性边界框到不同格式。
from ultralytics import YOLO
# 加载预训练的YOLO11n模型
model = YOLO("yolo11n-obb.pt")
# 对图像进行推理
results = model("boats.jpg") # 结果列表
# 查看结果
for r in results:
print(r.obb) # 打印包含方向性检测边界框的OBB对象
以下是OBB
类方法和属性的表格,包括它们的名称、类型和描述:
名称 |
类型 |
描述 |
---|---|---|
|
方法 |
将对象移动到CPU内存。 |
|
方法 |
将对象转换为NumPy数组。 |
|
方法 |
将对象移动到CUDA内存。 |
|
方法 |
将对象移动到指定设备。 |
|
属性( |
返回框的置信度值。 |
|
属性( |
返回框的类别值。 |
|
属性( |
返回框的跟踪ID(如果可用)。 |
|
属性( |
返回xyxy格式的水平框。 |
|
属性( |
返回xywhr格式的旋转框。 |
|
属性( |
返回xyxyxyxy格式的旋转框。 |
|
属性( |
返回按图像大小归一化的xyxyxyxy格式的旋转框。 |
绘制结果#
在Results
对象中,plot()
方法通过将检测到的对象(例如边界框、遮罩、关键点和概率)覆盖到原始图像上,便于可视化预测。此方法返回一个作为NumPy数组的注释图像,方便显示或保存。
from PIL import Image
from ultralytics import YOLO
# 加载预训练的YOLO11n模型
model = YOLO("yolo11n.pt")
# 对'bus.jpg'进行推理
results = model(["bus.jpg", "zidane.jpg"]) # 结果列表
# 可视化结果
for i, r in enumerate(results):
# 绘制结果图像
im_bgr = r.plot() # BGR顺序的numpy数组
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB顺序的PIL图像
# 在支持的环境中显示结果
r.show()
# 将结果保存到磁盘
r.save(filename=f"results{i}.jpg")
plot()
方法参数#
plot()
方法支持各种参数以定制输出:
参数 |
类型 |
描述 |
默认值 |
---|---|---|---|
|
|
是否包含检测置信度分数。 |
|
|
|
边界框的线宽。如果为 |
|
|
|
文本字体大小。如果为 |
|
|
|
文本注释的字体名称。 |
|
|
|
返回图像作为 PIL Image 对象。 |
|
|
|
绘图使用的替代图像。如果为 |
|
|
|
用于更快蒙版绘制的 GPU 加速图像。形状为 (1, 3, 640, 640)。 |
|
|
|
绘制关键点的半径。 |
|
|
|
用线连接关键点。 |
|
|
|
在注释中包含类别标签。 |
|
|
|
在图像上叠加边界框。 |
|
|
|
在图像上叠加掩码。 |
|
|
|
包含分类概率。 |
|
|
|
使用默认图像查看器直接显示注释后的图像。 |
|
|
|
将注释后的图像保存到通过 |
|
|
|
如果 |
|
|
|
指定颜色模式,例如 ‘instance’ 或 ‘class’。 |
|
线程安全推理#
当您在不同的线程中并行运行多个YOLO模型时,确保推理过程中的线程安全至关重要。线程安全的推理保证每个线程的预测是相互隔离的,不会互相干扰,避免竞态条件,并确保输出的一致性和可靠性。
在使用多线程应用程序中的YOLO模型时,为每个线程实例化单独的模型对象或使用线程本地存储以防止冲突非常重要:
在每个线程内部实例化单个模型以进行线程安全的推理:
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""使用本地实例化的YOLO模型对图像进行线程安全的预测。"""
model = YOLO(model)
results = model.predict(image_path)
# 处理结果
# 启动每个线程,每个线程都有自己的模型实例
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
有关YOLO模型线程安全推理的深入探讨和逐步指导,请参阅YOLO线程安全推理指南。该指南将提供所有必要的信息,帮助您避免常见错误并确保您的多线程推理顺利进行。
流媒体源 for
循环示例#
这里有使用 OpenCV (cv2
) 和 YOLO 在视频帧上运行推理的 Python 脚本。此脚本假设您已经安装了必要的包(opencv-python
和 ultralytics
)。
import cv2
from ultralytics import YOLO
# 加载 YOLO 模型
model = YOLO("yolo11n.pt")
# 打开视频文件
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# 遍历视频帧
while cap.isOpened():
# 从视频中读取一帧
success, frame = cap.read()
if success:
# 在帧上运行 YOLO 推理
results = model(frame)
# 在帧上可视化结果
annotated_frame = results[0].plot()
# 显示带有注释的帧
cv2.imshow("YOLO 推理", annotated_frame)
# 如果按下 'q',退出循环
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# 如果到达视频末尾,退出循环
break
# 释放视频捕获对象并关闭显示窗口
cap.release()
cv2.destroyAllWindows()
该脚本将对视频的每一帧进行预测,将结果显示出来,并在窗口中显示。通过按 ‘q’ 可以退出循环。
真实世界应用#
制造 |
体育 |
安全 |
---|---|---|
汽车零件检测 |
足球运动员检测 |
跌倒人员检测 |