将mask的图片标签转换为yolo的txt标签

本文介绍了如何使用OpenCV库将mask图片的二进制轮廓转换为YOLOv8所需的.txt格式标注文件,包括外轮廓的获取和坐标处理方法。

将mask的图片标签转换为yolo的txt标签

在这里插入图片描述

import copy
import cv2
import os
import shutil
import numpy as np


path = "你的mask路径  /Dataset/mask"
files = os.listdir(path)
for file in files:
    name = file.split('.')[0]
    file_path = os.path.join(path,name+'.png')
    img = cv2.imread(file_path)
    # img = cv2.imread(path)
    H,W=img.shape[0:2]
    print(H
虽然提供的参考引用未直接涉及将YOLO形式的标签转换为二分法掩码形式的内容,但可以从通用的图像处理和目标检测知识来阐述方法。 YOLO形式的标签通常是文本文件,每行代表一个目标,格式为 `类别编号 中心点x坐标 中心点y坐标 宽度 高度`,这些坐标和尺寸都是相对于图像的宽高归一化后的数值。二分法的掩码形式是一个与图像尺寸相同的二值图像,目标区域为一个值(通常是255),背景区域为另一个值(通常是0)。 以下是一个Python示例代码,使用OpenCV和NumPy库来实现转换: ```python import cv2 import numpy as np def yolo_to_binary_mask(yolo_labels, image_width, image_height): # 创建一个全零的掩码图像 mask = np.zeros((image_height, image_width), dtype=np.uint8) # 读取YOLO标签文件 with open(yolo_labels, 'r') as file: lines = file.readlines() for line in lines: # 解析每行的内容 parts = line.strip().split() # 忽略类别编号,只取后面的坐标和尺寸 _, x_center, y_center, width, height = map(float, parts) # 将归一化的坐标和尺寸转换为像素值 x_center_pixel = int(x_center * image_width) y_center_pixel = int(y_center * image_height) width_pixel = int(width * image_width) height_pixel = int(height * image_height) # 计算矩形框的左上角和右下角坐标 x1 = int(x_center_pixel - width_pixel / 2) y1 = int(y_center_pixel - height_pixel / 2) x2 = int(x_center_pixel + width_pixel / 2) y2 = int(y_center_pixel + height_pixel / 2) # 在掩码图像上绘制矩形框 cv2.rectangle(mask, (x1, y1), (x2, y2), 255, -1) return mask # 示例调用 yolo_labels_file = 'yolo_labels.txt' image_width = 640 image_height = 480 binary_mask = yolo_to_binary_mask(yolo_labels_file, image_width, image_height) # 保存掩码图像 cv2.imwrite('binary_mask.png', binary_mask) ``` 在这个示例中,首先创建一个全零的掩码图像,然后逐行读取YOLO标签文件,将归一化的坐标和尺寸转换为像素值,计算矩形框的左上角和右下角坐标,最后在掩码图像上绘制矩形框并填充。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值