当前位置: 首页 > article >正文

YOLOv5实战:如何一键导出检测框的坐标、类别和置信度到TXT文件(附完整代码)

YOLOv5实战结构化导出检测结果的工程化解决方案在计算机视觉项目的实际落地过程中我们常常需要将模型检测结果以结构化形式保存用于后续的数据分析、系统集成或模型评估。本文将深入探讨如何通过YOLOv5高效导出检测框的坐标、类别和置信度信息到TXT文件并提供可直接复用的工程化代码方案。1. 理解YOLOv5输出数据结构YOLOv5的检测结果本质上包含三个核心维度信息边界框坐标通常以(x_min, y_min, x_max, y_max)格式表示类别索引对应data/yaml文件中定义的类别顺序置信度分数模型对当前预测结果的把握程度0-1之间在原始实现中这些信息被封装在det变量中每个检测结果以[x1, y1, x2, y2, conf, cls]的形式存在。理解这一数据结构是进行定制化导出的基础。注意YOLOv5默认使用归一化坐标0-1之间但在实际应用中我们可能需要转换为绝对像素坐标。2. 核心导出方案设计与实现2.1 基础导出功能实现以下代码展示了如何修改YOLOv5的detect.py以实现结构化导出def write_detection_results(det, img_shape, txt_path): 将检测结果写入TXT文件 :param det: 检测结果张量 [n,6] (xyxy, conf, cls) :param img_shape: 原始图像尺寸 (height, width) :param txt_path: 输出文件路径 with open(txt_path, a) as f: for *xyxy, conf, cls in reversed(det): # 转换为绝对坐标 x1, y1, x2, y2 [int(coord) for coord in xyxy] # 格式化写入类别 置信度 x1 y1 x2 y2 line f{int(cls)} {conf:.4f} {x1} {y1} {x2} {y2}\n f.write(line)将此函数集成到detect.py的适当位置通常在绘制检测框之前并通过以下方式调用if save_txt: write_detection_results(det, im0.shape[:2], txt_path)2.2 高级导出格式定制根据不同的下游应用需求我们可以灵活调整输出格式。以下是几种常见变体格式类型数据结构适用场景基础格式cls conf x1 y1 x2 y2简单数据记录COCO风格cls conf x1 y1 width height兼容COCO评估工具归一化格式cls conf x_center y_center w hYOLO训练格式实现COCO风格导出的代码示例def write_coco_style(det, txt_path): with open(txt_path, a) as f: for *xyxy, conf, cls in reversed(det): x1, y1, x2, y2 xyxy width x2 - x1 height y2 - y1 line f{int(cls)} {conf:.4f} {x1} {y1} {width} {height}\n f.write(line)3. 工程化增强方案3.1 多文件批量处理在实际项目中我们常需要处理大量图像。以下脚本展示了如何批量处理并保持文件名对应import os from pathlib import Path def process_directory(source_dir, output_dir): source_dir Path(source_dir) output_dir Path(output_dir) output_dir.mkdir(exist_okTrue) # 获取所有图像文件 image_files list(source_dir.glob(*.jpg)) list(source_dir.glob(*.png)) for img_path in image_files: # 运行检测并导出结果 run_detection( weightsyolov5s.pt, sourcestr(img_path), projectstr(output_dir), nameresults, save_txtTrue ) # 重命名结果文件以匹配原图名 result_file output_dir / results / labels / f{img_path.stem}.txt if result_file.exists(): new_path output_dir / f{img_path.stem}_det.txt result_file.rename(new_path)3.2 性能优化技巧处理大规模数据时IO操作可能成为瓶颈。以下方法可显著提升导出效率缓冲写入累积一定数量的检测结果后批量写入并行处理使用多进程处理不同图像二进制格式对于极大数据集考虑使用二进制格式存储优化后的写入函数示例def buffered_write(detections, file_path, buffer_size100): buffer [] for det in detections: buffer.append(f{det[cls]} {det[conf]} {det[x1]} {det[y1]} {det[x2]} {det[y2]}) if len(buffer) buffer_size: with open(file_path, a) as f: f.write(\n.join(buffer) \n) buffer.clear() if buffer: # 写入剩余数据 with open(file_path, a) as f: f.write(\n.join(buffer) \n)4. 结果分析与可视化4.1 数据统计与质量检查导出数据后我们通常需要进行基本统计分析import pandas as pd import matplotlib.pyplot as plt def analyze_results(result_file): # 读取导出的TXT文件 df pd.read_csv(result_file, sep , names[class, confidence, x1, y1, x2, y2]) # 基本统计 print(f总检测数: {len(df)}) print(f平均置信度: {df[confidence].mean():.3f}) # 类别分布可视化 class_counts df[class].value_counts() class_counts.plot(kindbar) plt.title(Class Distribution) plt.xlabel(Class ID) plt.ylabel(Count) plt.show()4.2 结果可视化验证为确保导出数据的准确性建议实现简单的可视化验证import cv2 def visualize_detections(image_path, result_path): image cv2.imread(image_path) with open(result_path) as f: for line in f: cls, conf, x1, y1, x2, y2 map(float, line.strip().split()) # 绘制边界框 cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0,255,0), 2) # 添加标签 label f{int(cls)} {conf:.2f} cv2.putText(image, label, (int(x1), int(y1)-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2) cv2.imshow(Verification, image) cv2.waitKey(0)5. 高级应用场景5.1 与数据库集成对于需要长期存储和分析的场景可将结果直接导入数据库import sqlite3 def save_to_database(result_file, db_path): conn sqlite3.connect(db_path) cursor conn.cursor() # 创建表 cursor.execute( CREATE TABLE IF NOT EXISTS detections ( id INTEGER PRIMARY KEY AUTOINCREMENT, image_name TEXT, class INTEGER, confidence REAL, x1 INTEGER, y1 INTEGER, x2 INTEGER, y2 INTEGER, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP ) ) # 导入数据 with open(result_file) as f: for line in f: cls, conf, x1, y1, x2, y2 line.strip().split() cursor.execute( INSERT INTO detections (image_name, class, confidence, x1, y1, x2, y2) VALUES (?, ?, ?, ?, ?, ?, ?), (Path(result_file).stem, cls, conf, x1, y1, x2, y2) ) conn.commit() conn.close()5.2 自动化报告生成结合检测结果生成PDF报告from fpdf import FPDF def generate_report(result_file, output_pdf): pdf FPDF() pdf.add_page() pdf.set_font(Arial, size12) # 添加标题 pdf.cell(200, 10, txtDetection Results Report, ln1, alignC) # 添加统计信息 with open(result_file) as f: lines f.readlines() pdf.cell(200, 10, txtfTotal Detections: {len(lines)}, ln1) # 添加样本数据 pdf.cell(200, 10, txtSample Detections:, ln1) for line in lines[:10]: # 显示前10个检测结果 pdf.cell(200, 10, txtline.strip(), ln1) pdf.output(output_pdf)在实际项目中这种结构化导出方案显著提升了后续处理效率。一个典型的应用场景是将检测结果导入到GIS系统进行空间分析此时精确的坐标信息和规范的格式至关重要。

相关文章:

YOLOv5实战:如何一键导出检测框的坐标、类别和置信度到TXT文件(附完整代码)

YOLOv5实战:结构化导出检测结果的工程化解决方案 在计算机视觉项目的实际落地过程中,我们常常需要将模型检测结果以结构化形式保存,用于后续的数据分析、系统集成或模型评估。本文将深入探讨如何通过YOLOv5高效导出检测框的坐标、类别和置信度…...

强化学习在双摆控制中的应用与挑战

1. 双摆控制中的强化学习挑战双摆系统是控制理论中经典的欠驱动非线性系统,由两个通过关节连接的刚性杆组成,仅有一个关节可施加驱动力。这种系统表现出丰富的动力学特性,包括混沌行为和高度敏感性,使其成为测试控制算法的理想平台…...

NotebookLM技能集成:自动化文档问答与RAG应用实践

1. 项目概述:当NotebookLM遇上自定义技能最近在折腾AI工具链的时候,发现了一个挺有意思的项目:jasontsaicc/notebooklm-studio-skill。乍一看这个名字,你可能和我最初的反应一样,有点摸不着头脑。NotebookLM我知道&…...

Perplexity出版社信息查询终极清单(2024Q3独家更新):涵盖217家认证出版机构、11种非标准署名格式及4类灰色地带处理协议

更多请点击: https://intelliparadigm.com 第一章:Perplexity出版社信息查询 Perplexity 是一家以 AI 增强研究为定位的技术出版与知识平台,其核心产品并非传统纸质出版物,而是基于实时网络检索、引用溯源与结构化摘要的交互式问…...

基于Playwright的Instagram自动化技能包:原理、实现与智能体集成

1. 项目概述与核心价值最近在折腾个人智能助理,想让它能帮我处理一些社交媒体上的琐事,比如自动查看Instagram上的新动态、给特定帖子点赞或者保存一些有趣的图片。在网上搜了一圈,发现了一个叫adamanz/instagram-skill的开源项目&#xff0c…...

保姆级图解:NCCL的bootstrap网络连接到底是怎么“手拉手”建起来的?

保姆级图解:NCCL的bootstrap网络连接到底是怎么"手拉手"建起来的? 想象一群小朋友要围成一个圆圈玩游戏,但彼此都不认识。NCCL的bootstrap网络建立过程,就像这个"手拉手成圈"的奇妙旅程。本文将用最直观的类…...

热销榜单:2026年深圳App开发公司推荐,揪出大众推荐的五大高口碑产品

在2026年、深圳的App开发公司凭借其创新能力逐渐崭露头角。在这个市场中解决方案、从电商到物联网设计美学赢得了用户信任;而本凡码农科技则专注于小程序定制、满足市场对便捷应用的追求。还有、云码科技伴随着创新技术提供了更高等灵活性,而晨曦科技结合…...

别再被误导!Perplexity官网未明示的4项关键限制(附Chrome插件实时监控方案)

更多请点击: https://intelliparadigm.com 第一章:Perplexity免费版限制说明 Perplexity AI 的免费版本为用户提供了便捷的实时网络搜索与大模型问答能力,但其功能边界受明确策略约束。理解这些限制对合理规划研究、开发或日常使用至关重要。…...

AI Coding如何落地APP开发——从个人玩具到公司级降本增效

一、AI 编程能力如何应用到APP开发团队 每天打开新闻都是各种: AI可以取代程序猿、AI可以独立写页面、AI可以独立完成APP,程序员马上要失业了,一个产品经理半天时间就能生成一个带完整页面的活动模块原型;一个运营人员一个小时就…...

人为什么要活着的庖丁解牛

它的本质是:**这个问题本身是一个 逻辑陷阱 (Logical Trap)。它预设了生命必须有一个 外部赋予的、预先定义的“目的” (Pre-defined Purpose),就像软件必须有“需求文档”一样。然而,宇宙是 无目的的 (Purposeless),生命是 涌现的…...

如何快速设置Translumo:面向初学者的完整实时屏幕翻译指南

如何快速设置Translumo:面向初学者的完整实时屏幕翻译指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是…...

2026年南京本地实测整理,值得入手的高性价比全屋定制品牌推荐

讲真,南京准备装房子、换柜子的姊妹们、老少爷们,谁没为全屋定制头大过?刚收了江北核心区的新房,还是鼓楼老破小准备翻新,跑了三五家门店就会发现:水太深了!低价套餐勾你进去,签约后…...

人生的本质的庖丁解牛

它的本质是:人生是一个 向死而生 (Being-towards-death) 的 耗散结构 (Dissipative Structure)。它在时间轴上从 低熵 (有序/出生) 滑向 高熵 (无序/死亡),期间通过 消耗能量 (资源/注意力) 来维持暂时的 负熵 (秩序/成长)。在这个过程中,个体…...

从零到一:手把手教你用U盘搞定OpenEuler(欧拉)系统安装

1. 为什么选择OpenEuler? OpenEuler作为一款开源的企业级Linux发行版,凭借其高性能、高可靠性和安全性,已经成为众多开发者和企业的首选。我第一次接触OpenEuler是在一个服务器迁移项目中,当时需要寻找一个稳定且长期维护的Linux发…...

基于MCP协议构建AI记忆管理服务:原理、实现与应用实践

1. 项目概述:一个为AI应用量身定制的记忆管理工具最近在折腾AI应用开发,特别是那些需要长期对话或上下文关联的场景时,一个绕不开的痛点就是“记忆”问题。模型本身是健忘的,每次对话都是全新的开始。为了让AI能记住用户偏好、历史…...

如何用LRCGET歌词下载神器一键解决数千首离线音乐歌词同步难题

如何用LRCGET歌词下载神器一键解决数千首离线音乐歌词同步难题 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否拥有一个庞大的离线音乐库&#x…...

手把手复现经典:用Python和NumPy实现Laplacian曲面编辑的核心算法(附代码与避坑指南)

手把手复现经典:用Python和NumPy实现Laplacian曲面编辑的核心算法(附代码与避坑指南) 在三维图形处理领域,Laplacian曲面编辑技术因其直观的交互方式和稳定的变形效果,成为建模工具中的常青树。本文将带您从零开始&…...

NVIDIA Profile Inspector终极指南:解锁显卡隐藏性能的700+高级设置

NVIDIA Profile Inspector终极指南:解锁显卡隐藏性能的700高级设置 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 作为一款开源显卡配置工具,NVIDIA Profile Inspector提供了直…...

OpenClaw从入门到应用——工具(Tools):Lobster

通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》 Lobster 是一个工作流 Shell,它让 OpenClaw 将多步工具序列作为单一的、确定性的操作来运行,并带有明确的审批检查点。 引子 你的助手可以…...

3分钟从单图到3D模型:Wonder3D如何改变你的创作流程

3分钟从单图到3D模型:Wonder3D如何改变你的创作流程 【免费下载链接】Wonder3D Single Image to 3D using Cross-Domain Diffusion for 3D Generation 项目地址: https://gitcode.com/gh_mirrors/wo/Wonder3D 你是否曾为找不到合适的3D模型而烦恼&#xff1f…...

HLS.js技术深度解析:解决浏览器端HLS流媒体播放的工程挑战

HLS.js技术深度解析:解决浏览器端HLS流媒体播放的工程挑战 【免费下载链接】hls.js HLS.js is a JavaScript library that plays HLS in browsers with support for MSE. 项目地址: https://gitcode.com/gh_mirrors/hl/hls.js 在现代Web视频应用中&#xff0…...

Squirrel-RIFE实战指南:7步掌握AI视频补帧核心技术

Squirrel-RIFE实战指南:7步掌握AI视频补帧核心技术 【免费下载链接】Squirrel-RIFE 效果更好的补帧软件,显存占用更小,是DAIN速度的10-25倍,包含抽帧处理,去除动漫卡顿感 项目地址: https://gitcode.com/gh_mirrors/…...

大功率充电桩生产厂家:高效能产品的选择与评估标准

一、行业背景与权威数据据中国电动汽车充电基础设施促进联盟(EVCIPA)数据显示,截至2026年2月底,我国电动汽车充电基础设施(枪)总数达到2101.0万个,同比增长47.8%。其中,公共充电设施…...

3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验

3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学…...

IP定位系统源码二开版 新增分销功能 PHP地理位置查询系统

概述 在大数据与精准营销时代,获取访问者的地理位置信息已成为许多业务场景(如广告推广、安全风控、用户画像分析)的核心需求。为了帮助开发者快速搭建此类服务,幽络源源码网特别分享这款IP定位系统源码二开版。这是一套基于PHP开…...

Source Han Serif CN:7款免费开源字体如何重塑你的中文排版体验

Source Han Serif CN:7款免费开源字体如何重塑你的中文排版体验 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字内容爆炸的时代,选择一款优秀的中文字体往…...

LVGL字体优化实战:如何将中文字库放到外部SPI Flash并动态加载(节省内部RAM)

LVGL外部SPI Flash字库优化实战:RAM节省与性能平衡的艺术 在嵌入式UI开发中,中文显示一直是资源受限设备的痛点。当STM32F4系列芯片遇到需要显示多语言菜单的智能家居面板,或是工业HMI设备需要展示复杂参数时,传统的内部字库方案往…...

大模型爆发期!程序员现在转型,还能赶上风口吗?

文章目录前言一、2026年,大模型风口到底有多猛?二、90%的人不敢转型,都是被这3个误区坑了误区1:转大模型必须会高数、会从头训模型误区2:我只会写CRUD,没资格转大模型误区3:现在转已经晚了&…...

Hive 数据库 增删改 完整操作指南

Hive 是基于 Hadoop 的数据仓库,不支持传统数据库的行级事务(标准 Hive),核心用于离线数据分析。Hive 对数据库(Database) 的操作只有 CREATE(增)、DROP(删)、…...

别再只当CANoe/CANape的‘眼睛’了!VN1640A的I/O通道实战:手把手教你采集电压和开关信号

VN1640A硬件接口深度开发:从电压采集到PWM控制的工程实践 在汽车电子测试领域,Vector的VN系列接口设备早已成为行业标准配置。大多数工程师对CAN/LIN通道的应用驾轻就熟,却常常忽略设备上那个不起眼的9针I/O接口——这个被低估的硬件通道实际…...