Python通过YOLO格式TXT标签文件在图像中画框

使用场景

  1. 检测数据集标注是否有误: 在目标检测算法中需要标注自己的数据集,为了更加方便的检查数据集标注是否有误,可以使用该工具将标注结果绘制在图像中并查看。
  2. 美化识别结果中的检测框: 在一些目标检测场景中,YOLO检测算法原始的检测框绘制会导致重叠、颜色冲突、字体过大等问题。可以使用该工具进行修改。

代码

import os
import cv2class check_label:def __init__(self, classes:list, label_path:str, img_path:str, result_path:str):self.classes = classesself.line_width = 5 #线宽self.rec_color = (0, 0, 255) #颜色self.font_color = (255, 255, 255) #字体颜色self.font = cv2.FONT_HERSHEY_SIMPLEXself.font_size = 5 #字体大小self.font_thickness = 4self.font_x_offset = 0#字体x坐标偏移self.font_y_offset = -15#字体y坐标偏移self.isDrawFontRec = False#是否绘制字体矩形框self.isShowFont = False#是否绘制字体self.isShowConfidence = False#是否绘制置信度self.label_path =  label_path # 数据集标注结果文件(yolo格式)self.img_path = img_path  # 图像文件self.result_path = result_path  # 在图像上画好标注框文件self.label_files = os.listdir(label_path)self.img_files = os.listdir(img_path)self.label_files.sort(key=lambda x: int(x[:-4]))self.img_files.sort(key=lambda x: int(x[:-4]))def paint(self, imgName, pos):img = cv2.imread(self.img_path + "/" + imgName)size = img.shapeimgW = size[1]imgH = size[0]# print("pos:", len(pos))for pos_i in pos:# a, x, y, w, h, b = "orange", pos_i[1], pos_i[2], pos_i[3], pos_i[4], pos_i[4]pos_i = pos_i.split(' ')x_center = float(pos_i[1]) * imgW + 1y_center = float(pos_i[2]) * imgH + 1x_min = int(x_center - 0.5 * float(pos_i[3]) * imgW)y_min = int(y_center - 0.5 * float(pos_i[4]) * imgH)x_max = int(x_center + 0.5 * float(pos_i[3]) * imgW)y_max = int(y_center + 0.5 * float(pos_i[4]) * imgH)x = x_miny = y_minw = x_max - x_minh = y_max - y_min# rotate90(imgW, imgH, x_min, y_min, w, h, x_center, y_center)# rotate180(imgW, imgH, x_min, y_min, w, h, x_center, y_center)# rotate270(imgW, imgH, x_min, y_min, w, h, x_center, y_center)# b = float(pos_i[5])b = 0.5if self.isShowConfidence:a = self.classes[int(pos_i[0])]else:a = ""cv2.rectangle(img, (x, y), (x + w, y + h), self.rec_color, self.line_width)if self.isDrawFontRec:cv2.rectangle(img, (x + self.font_x_offset, y + self.font_y_offset), (x + w, y + abs(self.font_y_offset)), self.rec_color,-1)if self.isShowFont:cv2.putText(img, '{} {:.3f}'.format(a, b), (x + self.font_x_offset, y + self.font_y_offset), self.font, self.font_size,self.font_color, self.font_thickness)cv2.imwrite(self.result_path + "/" + imgName, img)def process(self):for label_file, img_file in zip(self.label_files, self.img_files):print(img_file, label_file)if not os.path.isdir(label_file):f = open(self.label_path + "/" + label_file, "r", encoding='utf-8')result = f.read().splitlines()# print(result)self.paint(img_file, result)f.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145580.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

私有化聊天软件成为企业内部通讯新趋势

在数字化转型浪潮的推动下,企业对于高效、安全、灵活的内部通讯需求日益增长。传统的电子邮件、电话会议等沟通方式已难以满足现代企业对即时性、协作性和信息安全性的要求。因此,私有化聊天工具作为企业内部通讯的定制化解决方案,正逐渐成为…

我的数据库第一课:从懵懂到启迪

我的数据库第一课:从懵懂到启迪 前言 在数字化浪潮席卷全球的今天,数据库作为IT技术的“活化石”,已经成为不可或缺的基础设施。特别是在国内,随着经济的飞速发展和信息化建设的推进,数据库技术也经历了从无到有、从…

企业微信用户授权与校验完整对接流程

Hello!欢迎各位新老朋友来看小弟博客,祝大家事业顺利,财源广进!! 主题:企业微信用户授权与校验完整对接流程 一:构造第三方应用授权链接 如果第三方应用需要在打开的网页里面携带用户的身份信息…

解锁数字转型新纪元:Vatee万腾平台,您的智能加速与策略智库

在数字经济时代的大潮中,企业的数字化转型已不再是选择题,而是必答题。面对这一挑战,Vatee万腾平台以其卓越的技术实力和前瞻性的战略视野,成为了众多企业加速数字化转型、实现智能化升级的得力助手和智囊团。 加速转型&#xff…

个人量化成功之路-----用代码一键画图Donchian Channel(唐奇安通道指标)

Donchian Channel(唐奇安通道指标)是用于交易突破的最古老、最简单的技术指标之一。是由Richard Donchian 提出的一个由三条线(上阻力线、下支撑线、中心线)组成的通道指标。 一般来说,唐奇安通道的宽度越宽&#xff0…

ISSCC34.7解析一种具备内存编码与刷新功能的eDRAM查找表数字存内计算芯片

一、引言 1. DCIM概述 数字存内计算(Digital Computing-in-Memory, DCIM)是一种将计算操作直接集成到存储单元中的新兴计算架构。传统计算模型(冯诺依曼架构)中的计算和存储是分离的,数据必须频繁在存储器和处理单元…

FastDFS的docker部署及实现头像上传

FastDFS的使用并实现头像上传 一、FastDFS概述二、安装FastDFS1. 拉取镜像2. 安装tracker3. 安装storage4. NGINX服务启动三、配置和依赖配置依赖四、头像上传一、FastDFS概述 概述 上传交互过程 两个服务:Tracker Server 和Storage Server Tracker Server 跟踪服务,负责调…

UNRAID系统忘记密码解决办法

前言 unraid系统自己通过命令修改密码以后,怎么也进不去了。 这次带来如何重置密码 操作

着色器 简介

着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间…

C语言进阶【5】---数据在内存中的存储【2】(小数存储很难吗?)

本章概述 本章引要练习 浮点数的存储浮点数的取出小补充题目解析彩蛋时刻!!! 本章引要 常见的浮点数:3.1415,1E10等。其中,1E10是科学计数法的形式,它也就等于1*10^10。小数数据类型&#xff1…

猫头虎 分享已解决Bug || Uncaught (in promise) ReferenceError: proxy is not defined 解决方案

🐯 猫头虎 分享已解决Bug || Uncaught (in promise) ReferenceError: proxy is not defined 解决方案 今天猫头虎带您探讨一个开发中常见但让人头疼的错误:Uncaught (in promise) ReferenceError: proxy is not defined。 很多前端开发者在工作中都会遇…

中国书法—孙溟㠭浅析碑帖《爨宝子碑》

中国书法——孙溟㠭浅析碑帖《爨宝子碑》 《爨宝子碑》 全称是《晋故振威将军建宁太守爨宝子之墓》,此碑刻于东晋大亨四年(公元405年)属楷书体。 《爨宝子碑》 《爨宝子碑》 至清朝乾隆四十三年(1778年)在云南南宁&…

基于C#+SQL Server2005(WinForm)图书管理系统

图书管理系统 一、 首先把数据库脚本贴出来(数据库名为library) USE [library] GO /****** Object: Table [dbo].[books] Script Date: 06/12/2016 11:27:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[books]([bNum] [nvarchar](10…

Σ-Δ模数转换器(ADC)揭秘(2)

5. Maxim的Σ-Δ ADC 新型高度集成Σ-Δ ADC以最少数量的外部元件处理小信号。例如,MAX1402芯片包括众多功能,被作为片上系统(图12)。器件在工作模式下的静态电流低至250A(关断模式下为2A),480sps速率时的精度为16位,4800sps速率…

英语六级-学习

01 英语分值比例 02听力学习 听力练习,基础好选择标准VOA和BBC。基础差选择VOA慢速。 听力内容包括不受政治争议的内容,社会生活类(奇闻趣事、日常生活)、经济类(商务、职场相关)、环保类、互联网类---------根据各类主题快速找到录音材料中心点。 研…

基于YOLOv8的RTSP视频流实时目标检测与告警系统设计与实现(超详细)

前言 在训练模型完成后,想把模型应用起来,比如模型可以部署到项目中,实时接收RTSP视频流进行识别检测,一旦达到自己所设置的置信度阈值(例如大于0.5),系统就会实时把报警信息发送给服务端&…

让银河麒麟桌面操作系统V10(SP1)允许ping测

银河麒麟桌面操作系统V10(SP1)使用的防火墙是kylin-firewall,默认情况下“公用网络”是禁ping的,如下图: 可以在“安全中心”->“网络保护”->“配置访问规则”->“专网规则”->找到“icmp”这条规则&…

减少代码错误的方法

最重要的是在写之前多举几个刁钻的例子来理解问题和代码的正确性 如果你给不出反例就说明你还没有理解(有的反例会后来会被证明是错的) 由于递归是把自己的和别人的相关的混合在一起来了,所以举反例的时候要从不同的角度出发。 求割点的&a…

二、电源滤波器

电源滤波器 1、电源滤波的过程分析! 波形形成过程: 2、计算: 滤波电容的容量和耐压值选择。 学习心得

【算法】最长公共子序列(C/C++)

最长公共子序列(LCS,Longest Common Subsequence)问题简称(LCS),是动态规划里面里面的基础算法。它的所解决的问题是,在两个序列中找到一个序列,使得它既是第一个序列的子序列&#…