AI计算机视觉笔记十五:编写检测的yolov5测试代码

简介: 该文为原创文章,如需转载,请注明出处。本文作者在成功运行 `detect.py` 后,因代码难以理解而编写了一个简易测试程序,用于加载YOLOv5模型并检测图像中的对象,特别是“人”类目标。代码实现了从摄像头或图片读取帧、进行颜色转换,并利用YOLOv5进行推理,最后将检测框和置信度绘制在输出图像上,并保存为 `result.jpg`。如果缺少某些模块,可使用 `pip install` 安装。如涉及版权问题或需获取完整代码,请联系作者。

若该文为原创文章,转载请注明原文出处。

通过detect.py代码测试通过后,阅读detect.py代码发现,有些难以看懂,看得有点蒙蒙的,

所以编写了一个简单的测试程序。

代码如下:


import cv2
import numpy as np
import torch
import time
import pandas as pd

class My_detector:

    def __init__(self):
        # 加载model
        self.model = torch.hub.load('E:/desktop/yolov5-5.0/', 'custom',
                                    'E:/desktop/yolov5-5.0/weights/yolov5s.pt', source='local') 

        self.model.conf = 0.4

        # 打开摄像头或打开图片
        self.cap = cv2.VideoCapture('./data/images/zidane.jpg')
        #self.cap = cv2.VideoCapture(0)

    def detect(self):
        while True:
            # 读取图片
            ret, frame = self.cap.read()

            if frame is None:
                break

            # 翻转
            frame = cv2.flip(frame, 1)
            # 颜色转换
            frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            # 推理
            results = self.model(frame_rgb)


            results_list = results.pandas().xyxy[0]
            print('pd:')
            print(results_list)

            # 只要name为person的数据
            person_list = results_list[results_list['name']=='person'].to_numpy()
            print(person_list)

            for box in person_list:
                l, t, r, b = box[:4].astype('int')
                conf = box[4]
                conf_txt =str(round(conf*100,1) ) + '%'
                name = box[6]

                cv2.rectangle(frame, (l, t), (r, b), (0, 255, 0), 5)
                cv2.putText(frame, conf_txt, (l,t-35), cv2.FONT_ITALIC,1,(0,255,0),2)           
                cv2.putText(frame, name, (l,t-70), cv2.FONT_ITALIC,1,(0,255,0),2)   


            #cv2.imshow('DEMO', frame)
            cv2.imwrite('./result.jpg', frame)

            if cv2.waitKey(10) & 0xFF == ord('q'):
                break

        self.cap.release()
        cv2.destroyAllWindows()


detector = My_detector()
detector.detect()

运行后,会把结果保存成results.jpg图片

image.png

打印的信息参数有:

xmin ymin xmax ymax: 对应了坐标

class: 类别

name: 名字

执行时,如果提示一些module没有安装,直接使用pip install安装。

如有侵权,或需要完整代码,请及时联系博主。

相关文章
|
5月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
1189 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
5月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
509 11
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
5月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
5月前
|
人工智能 机器人 测试技术
AI写的代码为何金玉其外败絮其中
本文分析AI编码看着好看其实很烂的现象、原因,探索行之有效的的解决方案。并从理论上延伸到如何更好的与AI协作的方式上。
224 3
|
6月前
|
人工智能 测试技术 开发工具
如何将 AI 代码采纳率从30%提升到80%?
AI编码采纳率低的根本原因在于人类期望其独立完成模糊需求,本文提出了解决之道,讲解如何通过结构化文档和任务拆解提高AI的基础可靠性。
1523 24
|
5月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
5月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
2377 71
|
5月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
1087 24
|
5月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码