吉祥猴378 2024-07-09 12:05 采纳率: 95.8%
浏览 7
已结题

哪位大姥,知道yolov5模型训练成功,屏幕识别写完,如何在识别上出现边框

model = torch.hub.load('F:\yolov5-7.0', 'custom', 'F:\yolov5-7.0/runs/train/exp4/weights/best.pt',
source='local') # 你需要提供准确的路径到weights和best.pt文件
model = model.to(device)
model.conf = 0.3
if name == 'main'

monitor = {  # 定义屏幕的坐标范围,根据你的需要进行调整
    "left": 0,
    "top": 0,
    "width": 2560,
    "height": 1440 }
cv2.namedWindow('SF_TRT', cv2.WND_PROP_VISIBLE)  # 创建显示窗口
while True:# 持续截图并进行目标检测
    img = cv2.resize(img, (640, 640))  # 调整图像大小
    img = img / 255.0  # 归一化
    img = img.transpose((2, 0, 1))  # 转换通道顺序
    results = model(img)
    cv2.imshow('SF_TRT',img)
    k = cv2.waitKey(1)
    if k % 256 == 27:
        break
cv2.destroyAllWindows()
  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-07-09 12:05
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您好!很高兴帮助您解决问题。根据您提供的信息,您已经成功训练了 YOLOv5 模型,并希望在识别目标时在屏幕上显示边框。下面是一些步骤和代码示例,帮助您实现这个功能:

    1. 加载模型:您已经加载了模型,并且设置了置信度阈值。

    2. 屏幕截图:您需要使用 cv2 库来获取屏幕截图。可以使用 cv2.VideoCapture 来捕获屏幕。

    3. 图像处理:调整图像大小和归一化您已经做了。

    4. 目标检测:使用模型对图像进行目标检测。

    5. 绘制边框:使用 cv2.rectangle 函数在检测到的目标周围绘制边框。

    6. 显示结果:使用 cv2.imshow 显示处理后的图像。

    7. 退出程序:按下 Esc 键退出循环。

    下面是一段示例代码,演示了如何实现上述功能:

    import cv2
    import torch
    
    # 加载模型
    model = torch.hub.load('F:\yolov5-7.0', 'custom', 'F:\yolov5-7.0/runs/train/exp4/weights/best.pt', source='local')
    model = model.to(device)
    model.conf = 0.3
    
    # 捕获屏幕
    cap = cv2.VideoCapture(monitor['left'], cv2.CAP_DSHOW)  # 假设使用DirectShow捕获屏幕
    
    if __name__ == '__main__':
        while True:
            ret, frame = cap.read()  # 读取屏幕截图
            if not ret:
                break
            
            # 图像处理
            frame = cv2.resize(frame, (640, 640))
            frame = frame / 255.0
            frame = frame.transpose((2, 0, 1))  # 转换通道顺序
            
            # 目标检测
            results = model(frame.unsqueeze(0))  # 模型需要batch dimension
            
            # 绘制边框
            for *xyxy, conf, cls in results.xyxy[0].cpu().numpy():
                if conf > model.conf:
                    label = f"{model.names[int(cls)]} {conf:.2f}"
                    plot_one_box(xyxy, frame, label=label, color=(255, 0, 0), line_thickness=3)
            
            # 显示结果
            cv2.imshow('SF_TRT', frame)
            k = cv2.waitKey(1)
            if k % 256 == 27:  # 27是Esc键的ASCII码
                break
    
        cv2.destroyAllWindows()
        cap.release()
    

    请注意,上面的代码中 plot_one_box 函数用于绘制边框,您需要自己实现这个函数,或者使用 YOLOv5 库中提供的函数。另外,cv2.VideoCapture 的第一个参数需要根据您使用的捕获方式进行调整。

    希望这些信息对您有帮助!如果您需要进一步的帮助,或者需要实现 plot_one_box 函数的示例,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月17日
  • 已采纳回答 7月9日
  • 创建了问题 7月9日

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件