You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YOLOv8如何将模型输出转为图片并保存以适配EasyOCR?

解决YOLOv8检测结果裁剪保存车牌的方法

你可以通过两种方式实现车牌区域的裁剪与保存,适配后续EasyOCR识别需求:

方法一:使用YOLOv8自带的裁剪保存功能

YOLOv8的Results对象内置了save_crop方法,可直接保存检测到的目标区域,无需手动处理坐标:

from ultralytics import YOLO

# 加载模型并执行检测
license_plate_detector = YOLO('./model/best.pt')
results = license_plate_detector('./42.jpg')

# 保存裁剪后的车牌区域
# 默认保存路径为 runs/detect/exp/crops/[类别名]/ ,也可指定自定义路径
results[0].save_crop(save_dir='./cropped_plates')

执行后,检测到的每张车牌会以单独图片的形式保存在指定文件夹中。

方法二:手动裁剪并保存(更灵活)

如果需要自定义裁剪逻辑或保存格式,可通过提取检测框坐标,结合PIL/OpenCV实现:

方式A:使用PIL库

from ultralytics import YOLO
from PIL import Image

# 模型检测
license_plate_detector = YOLO('./model/best.pt')
results = license_plate_detector('./42.jpg')

# 读取原始图片
img = Image.open('./42.jpg')

# 遍历每个检测到的车牌框
for idx, box in enumerate(results[0].boxes):
    # 提取框坐标(xyxy格式:左上角x1,y1,右下角x2,y2),转为整数
    x1, y1, x2, y2 = map(int, box.xyxy[0])
    # 裁剪车牌区域
    plate_img = img.crop((x1, y1, x2, y2))
    # 保存图片
    plate_img.save(f'plate_{idx}.jpg')

方式B:使用OpenCV库

from ultralytics import YOLO
import cv2

# 模型检测
license_plate_detector = YOLO('./model/best.pt')
results = license_plate_detector('./42.jpg')

# 读取原始图片(OpenCV默认BGR格式)
img = cv2.imread('./42.jpg')

# 遍历每个检测框
for idx, box in enumerate(results[0].boxes):
    x1, y1, x2, y2 = map(int, box.xyxy[0])
    # 裁剪区域(OpenCV切片格式:y_start:y_end, x_start:x_end)
    plate_img = img[y1:y2, x1:x2]
    # 保存图片
    cv2.imwrite(f'plate_{idx}.jpg', plate_img)

关键说明

  • results[0].boxes.xyxy返回的是检测框的浮点型坐标,需转为整数才能用于图片裁剪
  • 两种手动方式生成的图片可直接传入EasyOCR进行字符识别

内容的提问来源于stack exchange,提问作者Murtaza Nazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:55:55