Java的初学者26.3.4 2026-03-12 11:28 采纳率: 0%
浏览 6

图片和视频跑哪去了?

跟着肆十二博主,学的YOLOv5,运行代码后,我的界面没有显示图片和视频

img


这是正常运行的结果。

img


这是我运行的结果,不知道在哪里出错了,希望大家帮我解答,求解,蟹蟹

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2026-03-12 11:29
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你提到在运行 YOLOv5 的代码后,界面没有显示图片和视频,但你认为这是“正常运行的结果”。这可能意味着你对 YOLOv5 的运行机制不太熟悉,或者代码中存在一些配置或路径错误。以下是对问题的详细分析与解决方案:


    一、可能的原因分析

    1. 未正确设置输入源(图片/视频)
      • YOLOv5 默认使用摄像头作为输入源,如果你没有指定图片或视频文件路径,程序会尝试调用摄像头,而摄像头未连接或权限不足时,可能导致无输出。
    2. 输出结果未正确保存或显示
      • YOLOv5 默认会在 runs/detect 文件夹下生成检测结果,但如果你没有查看该目录,或未开启图像显示功能,可能会误以为没有输出。
    3. 代码逻辑问题
      • 你可能在代码中关闭了图像显示(如 cv2.imshow() 被注释),或未正确加载图像/视频文件。

    二、解决方案(分步骤)

    1. 检查输入源是否正确

    • 检查代码中是否指定了图片或视频路径
      detect.py 或你自定义的脚本中,确保有如下代码:

      source = "your_image.jpg"  # 或者 "your_video.mp4"
      

      如果你没有指定,YOLOv5 会默认使用摄像头(source=0)。如果摄像头不可用,就会没有输出。

    • 修改为图片或视频路径
      如果你想测试图片或视频,可以将 source 改为你的本地文件路径,例如:

      source = "test.jpg"  # 替换为你的图片路径
      

    2. 检查输出目录

    • 查看 runs/detect 目录
      YOLOv5 会将检测结果保存在这个目录下,包括带标注的图片和视频。你可以:
      • 打开项目根目录下的 runs/detect 文件夹
      • 查看是否有生成的图片(如 exp/ 文件夹中的图片)
      • 或者查看是否有生成的视频文件(如 exp/ 中的 .mp4

    3. 确保图像显示功能未被禁用

    • 检查是否使用了 cv2.imshow()
      detect.py 中,通常会有类似如下代码:
      cv2.imshow('YOLOv5', im0)
      cv2.waitKey(1)  # 等待按键
      

      如果你删除了这些代码,就看不到图像。请确认你是否手动注释掉了这些部分。


    4. 运行命令行参数

    • 使用标准命令运行检测
      建议使用命令行方式运行,而不是直接运行 Python 脚本。例如:
      python detect.py --source test.jpg --weights yolov5s.pt
      
      • --source:输入源(图片、视频或摄像头)
      • --weights:模型权重路径

    5. 修改后的代码示例(供参考)

    如果你是通过自定义脚本运行,以下是简化版的代码示例:

    import cv2
    from models.experimental import attempt_load
    from utils.general import check_img_size, non_max_suppression, scale_coords
    from utils.plots import plot_one_box
    
    # 加载模型
    model = attempt_load('yolov5s.pt', device='cpu')  # 可以改为 'cuda' 使用GPU
    
    # 图像路径
    img_path = 'test.jpg'
    
    # 读取图像
    img = cv2.imread(img_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
    # 预处理
    img = check_img_size(img, imgsz=640)
    img = img / 255.0  # 归一化
    
    # 推理
    with torch.no_grad():
        pred = model(torch.from_numpy(img).unsqueeze(0).float())
    
    # 后处理
    pred = non_max_suppression(pred, 0.25, 0.45)
    
    # 绘制结果
    for i, det in enumerate(pred):
        if len(det):
            for *xyxy, conf, cls in det:
                label = f'{model.names[int(cls)]} {conf:.2f}'
                plot_one_box(xyxy, img, label=label, color=(255, 0, 0), line_thickness=2)
    
    # 显示图像
    cv2.imshow('YOLOv5 Detection', cv2.cvtColor(img, cv2.COLOR_RGB2BGR))
    cv2.waitKey(0)
    

    三、常见错误排查

    | 问题 | 解决方案 | |------|----------| | 未看到图像 | 检查 source 是否正确,确认 cv2.imshow() 未被注释 | | 没有输出文件 | 查看 runs/detect 文件夹,确认模型已保存 | | 摄像头无法打开 | 检查摄像头设备是否可用,或改用图片/视频 | | 模型未加载 | 确认 weights 路径正确,且模型文件存在 |


    四、总结

    重点总结:

    • 确认输入源是否正确(图片/视频/摄像头)
    • 查看 runs/detect 目录获取检测结果
    • 确保 cv2.imshow() 未被禁用
    • 使用标准命令运行检测

    如果你能提供具体的代码片段或错误日志,我可以进一步帮你定位问题。希望以上内容对你有帮助!如果还有疑问,欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日