数据集制作——语义分割前png、jpg格式标签图转yolo格式.txt文件(附代码)
💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《暗光增强》
📝《模型优化》
📝《模型实战部署》

目录
- 一、YOLO格式
- 二、实现步骤
- 三、代码
- 3.1 参数修改
- 3.2 代码
- 四、转换结果
- 五、总结
一、YOLO格式
YOLO格式的数据集通常包含两部分:图像文件和对应的文本标注文件。每个文本标注文件中包含了图像中每个物体的类别和位置信息。每一行代表一个物体,格式如下:
<class_id> <x_center> <y_center> <width> <height>
其中,<class_id>是物体类别的ID,<x_center>和<y_center>是物体中心点的坐标,和是物体的宽度和高度。所有的坐标和尺寸都需要被归一化,即除以图像的宽度和高度,因此它们的值都在0到1之间。
二、实现步骤
要将.png格式的标签图转换为YOLO格式的.txt文件,需要以下步骤:
(1)读取.png标签图,每个物体应该被标记为不同的颜色;
(2)解析标签图,对每种颜色进行遍历,找出所有像素点的坐标;
(3)对每种颜色的像素点坐标进行分析,计算出对应的bounding box(通过找到最小和最大的x,y坐标来实现);
(4)将bounding box的坐标和尺寸归一化,然后保存为.txt文件。
三、代码
3.1 参数修改

3.2 代码
注:.png格式个标签图像,必须是单通道图像。
import os
import cv2
import numpy as npdef convert_segmentation_to_yolo(img_path, output_path, num_classes):# 读取标签图img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)height, width = img.shape# 创建用于存储YOLO格式的列表yolo_labels = []# 遍历每个类别for class_id in range(num_classes):# 找到当前类别的所有像素位置class_pixels = np.where(img == class_id)# 如果当前类别不存在,跳过if len(class_pixels[0]) == 0:continue# 找到类别的最小和最大边界x_min = np.min(class_pixels[1])x_max = np.max(class_pixels[1])y_min = np.min(class_pixels[0])y_max = np.max(class_pixels[0])# 计算中心点和宽高,并归一化x_center = (x_min + x_max) / 2 / widthy_center = (y_min + y_max) / 2 / heightbbox_width = (x_max - x_min) / widthbbox_height = (y_max - y_min) / height# 保存YOLO格式的标签yolo_labels.append(f"{class_id} {x_center} {y_center} {bbox_width} {bbox_height}")# 将YOLO标签写入.txt文件txt_file = os.path.splitext(os.path.basename(img_path))[0] + ".txt"with open(os.path.join(output_path, txt_file), "w") as f:for label in yolo_labels:f.write(label + "\n")# 示例调用
# img_folder = 'path/to/your/png/folder'
# output_folder = 'path/to/your/txt/folder'
img_folder = 'Images/Segment_Images/image_png'
output_folder = 'Images/Segment_Images/label_txt'
# num_classes = 21 # 假设有21个类别
num_classes = 2 # 假设有21个类别if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历标签图文件夹并转换
for img_file in os.listdir(img_folder):if img_file.endswith('.png'):img_path = os.path.join(img_folder, img_file)convert_segmentation_to_yolo(img_path, output_folder, num_classes)
四、转换结果
下面是原始的png格式标签图和转换后的yolo格式.txt文件。

五、总结
以上就是语义分割前png、jpg格式标签图转yolo格式.txt文件的详细过程,希望能帮到你!
感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖
关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!
相关文章:
数据集制作——语义分割前png、jpg格式标签图转yolo格式.txt文件(附代码)
💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《暗光增强》 &a…...
机器学习课程复习——ANN
Q:ANN? 基本架构 由输入层、隐藏层、输出层等构建前馈/反馈传播 工作原理 先加权求和:每个神经元的输出是输入加权和的激活再送入激活函数:激活函数的存在使得其能够拟合各类非线性任务 联想:像adaboosting的加权求…...
C++回溯算法(2)
棋盘问题 #include<bits/stdc.h> using namespace std; void func(int,int); bool tf(int,int); void c(); int n,k; char a[110][110]; int cnt20; int main() {cin>>n>>k;for(int i0;i<n;i){for(int j0;j<n;j){cin>>a[i][j];}}func(0,0);cout…...
流量有限、日活低的APP适合对接广告变现吗?
APP广告变现,总用户数和日活用户(DUA)是衡量APP价值和影响力的重要指标之一。 APP DUA过万,尤其是大几万时,通常具备了商业化价值,适合接入广告变现。日活1W意味着每天有1万名用户在使用这款应用ÿ…...
Shell 学习笔记 - 变量的类型 + 变量的赋值
1.6 Shell 变量的类型 Shell 变量分为四类,分别是 自定义变量环境变量位置变量预定义变量 根据工作要求临时定义的变量称为自定义变量; 环境变量一般是指用 export 内置命令导出的变量,用于定义 Shell 的运行环境,保证 Shell …...
vue播放flv格式的直播流
在ios无法播放,安卓可以 安装 npm install flv.js --save页面 <template><div><videoref"videoElement"style"width: 100%; height: 100%"autoplayplaysinlinemuted></video></div> </template><scr…...
Qt入门小项目 | 实现一个图片查看器
文章目录 一、实现一个图片查看软件 一、实现一个图片查看软件 需要实现的功能: 打开目录选择图片显示图片的名字显示图片 在以上功能的基础上进行优化,需要解决如下问题: 如何记住上次打开的路径? 将路径保存到配置文件中&#x…...
qt仿制qq登录界面
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {// 设置窗口大小this->resize(window_width, window_heigth);// 固定窗口大小this->setFixedSize(window_width, window_heigth);// 设置窗口图标this->se…...
HashMap详解(含动画演示)
目录 HashMap1、HashMap的继承体系2、HashMap底层数据结构3、HashMap的构造函数①、无参构造②、有参构造1 和 有参构造2 (可以自定义初始容量和负载因子)③、有参构造3(接受一个Map参数)JDK 8之前版本的哈希方法:JDK 8版本的哈希方法 4、拉链法解决哈希冲突什么是拉…...
TVS的原理及选型
目录 案例描述 TVS管的功能与作用: TVS选型注意事项: 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V,而选型的TVS管位SMJ40CA,其保护电压为40V未…...
【机器学习】无监督学习:探索数据背后的隐藏模式
在机器学习的广阔领域中,监督学习因其直观的训练方式和广泛的应用场景,往往受到更多的关注。然而,随着数据量和数据类型的不断增长,无监督学习的重要性日益凸显。本文将详细介绍无监督学习的理论基础、常用算法及其在实际中的应用…...
使用Elasticsearch在同一索引中区分不同类型的文档
在使用Elasticsearch时,有时我们需要在同一个索引中存放不同类型的文档,并且这些文档的字段可能不一致。在早期版本中,我们可以使用types来实现,但在Elasticsearch 7.x及更高版本中,types概念已被弃用。本文将介绍如何…...
驾校在线考试系统源码 手机+PC+平板自适应
Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应,机动车驾驶培训学校驾校类网站源码带手机端 运行环境:phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应...
c++的多态,继承,抽象类,虚函数表,虚函数等题目+分析
目录 题目 代码题 分析 主观题 题目 代码题 class A { public:virtual void func(int val 1) {std::cout << "A->" << val << std::endl;}virtual void test() { func(); } };class B : public A { public:void func(int val 0) { std…...
利用 Qwen-VL 进行私有化部署第一个 AI 多模态大模型
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
王思聪隐形女儿曝光
王思聪"隐形"女儿曝光!黄一鸣独自面对怀孕风波,坚持生下爱情结晶近日,娱乐圈掀起了一场惊天波澜!前王思聪绯闻女友黄一鸣在接受专访时,大胆揭露了她与王思聪之间的爱恨纠葛,并首度公开承认&#…...
学习笔记——网络管理与运维——SNMP(SNMP原理)
四、SNMP原理 SNMP的工作原理基于客户端-服务器模型。其中,网络管理系统是客户端,而网络设备是服务器。客户端向服务器发送请求消息(即"Get"或"Set"命令)来获取或修改服务器的信息。服务器收到请求消息后,会返回相应的响…...
基于STM32和人工智能的自动驾驶小车系统
目录 引言环境准备自动驾驶小车系统基础代码实现:实现自动驾驶小车系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:自动驾驶应用与优化问题解决方案与优化收尾与总结 1. 引言 随着人工智能和嵌入式系统技术的…...
简单介绍vim
文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置:编辑配置文件:添加配置选项:保存并退出编辑器:快速配置验证设置: 总结 前言 Vim是一款强大的文本编辑器,被广泛用于各种编程和文本编辑任…...
使用本地数据对transformers模型进行微调训练
模型 transformers模型是使用比较多的模型,奈何各个都是体积大,找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的,也就意味着你可以使用 git clone 可以下载仓库内所有的…...
Qwen3-Reranker-0.6B保姆级教程:requirements.txt依赖版本兼容性避坑指南
Qwen3-Reranker-0.6B保姆级教程:requirements.txt依赖版本兼容性避坑指南 1. 引言:为什么依赖版本如此重要 当你第一次接触Qwen3-Reranker-0.6B这个强大的重排序模型时,可能会觉得安装过程很简单——不就是运行一个pip install命令吗&#…...
腾讯优图4B模型实测:轻量级多模态AI,图片描述、图表分析、目标检测,一个模型全解决
腾讯优图4B模型实测:轻量级多模态AI,图片描述、图表分析、目标检测,一个模型全解决 1. 开箱体验:4B参数的全能选手 当我第一次在CSDN星图镜像广场看到这个只有4B参数的腾讯优图多模态模型时,说实话是持怀疑态度的。毕…...
C# Enumerable类 之 高效数据转换实战指南
1. 为什么需要数据转换? 在C#开发中,我们经常会遇到需要处理不同类型数据集合的场景。比如从数据库读取的数据可能是object类型,或者老项目中还在使用非泛型的ArrayList。这时候就需要将这些"原始"数据转换成我们需要的特定类型&am…...
Tao-8k与卷积神经网络结合:图像描述生成与视觉问答实战
Tao-8k与卷积神经网络结合:图像描述生成与视觉问答实战 你有没有想过,让AI不仅能“看见”图片,还能像人一样“理解”并“描述”它?比如,给一张公园里小孩踢球的照片,AI不仅能认出里面有小孩和足球…...
从D(HE)ater到实战加固:剖析SSH密钥交换DoS漏洞的攻防演进与缓解策略
1. 当SSH握手变成CPU绞肉机:D(HE)ater攻击原理拆解 那天凌晨三点,运维老张被刺耳的告警声惊醒。监控大屏上,十几台服务器的CPU曲线全部飙到100%,而罪魁祸首竟然是看似无害的SSH服务。这就是典型的D(HE)ater攻击现场——攻击者用特…...
新手零压力入门:借助快马ai互动教程轻松搞定node.js安装与环境搭建
最近在学前端开发,发现很多教程都提到要安装Node.js。作为一个纯小白,第一次看到"环境变量"、"包管理器"这些词简直一头雾水。好在发现了InsCode(快马)平台,它把复杂的安装过程变成了可以边学边做的互动教程,…...
终极指南:如何用HS2-HF Patch轻松实现Honey Select 2中文本地化
终极指南:如何用HS2-HF Patch轻松实现Honey Select 2中文本地化 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为看不懂Honey Select 2的日文界…...
炒菜机器人:商用火热,家用还有多远?
3月11日,方太发布全球首款机器人厨房,搭载“成长型”厨房具身智能系统。炒菜机器人在商用场景已加速渗透,而进入家庭仍面临诸多挑战。方太发布机器人厨房3月11日,方太正式发布全球首款机器人厨房,其搭载业界首套“成长…...
智慧电子元器件识别 电子废弃物场景下的物料分类与元器件识别 元器件分拣数据集 电子废弃物自动分拣 电容数据集 保险丝数据集 第10617期
电子废弃物分类与元器件检测数据集 README 项目概述 本数据集专注于电子废弃物场景下的物料分类与元器件识别任务,为固废资源化利用、智能拆解及环保检测领域提供高质量标注数据,助力电子废弃物的高效回收与无害化处理。核心数据信息维度内容数据类别共1…...
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 想要找回珍贵的聊天记录却苦于微信加密机制?WechatDecrypt作为一款专业的…...
