首页IT科技yolo标签格式(YOLOv5 txt标签转图像标签(多个标签))

yolo标签格式(YOLOv5 txt标签转图像标签(多个标签))

时间2025-05-05 16:51:57分类IT科技浏览3107
导读:txt的数据如图所示 这里每一行是一个标签,原始的图片如图所示...

txt的数据如图所示

这里每一行是一个标签          ,原始的图片如图所示

这里有五个龋齿

1.读原始图像以及对应的txt文件

我这里图像和txt的名称是相同的

def init_func(): # txt文件夹操作 folder_type = train # folder_type = val img_dir = ../teeth_data/ + folder_type + /image txt_dir = ../teeth_data/ + folder_type + /txt save_dir = ../teeth_data/ + folder_type + /mask files = os.listdir(img_dir) for file in files: name = file[0:-4] img_path = img_dir + / + name + .png txt_path = txt_dir + / + name + .txt

这样我就能得到对应的图像和txt文件了               ,然后我需要获得原始图像的大小

2.获得原始图像的大小

img = cv2.imread(img_path) # 读取图片信息 img_x = img.shape[0] img_y = img.shape[1]

3.生成一张大小相同     ,黑色背景的图片

img_save = np.zeros((img_x, img_y, 1)) # 黑色背景

4.读取txt文件          ,循环的增加标签

# 打开文件 file = open(txt_path, "r") # 逐行读取文件内容 for line in file: data = txt2mask_new(img_x, img_y, line) # 获得不规则图形 color = 225 cv2.fillPoly(img_save, # 原图画板 [data], # 多边形的点 color=color) save_path = save_dir + / + name + .png cv2.imwrite(save_path, img_save)

5.获得不规则图形(标签)

def txt2mask_new(img_x, img_y, line): # 处理每一行的内容 data = line.split(\n)[0] d = data.split(, -1) # d[-1] = d[-1][0:-1] data = [] for i in range(1, int(len(d) / 2) + 1): data.append([img_y * float(d[2 * i - 1]), img_x * float(d[2 * i])]) data.append(data[0]) data = np.array(data, dtype=np.int32) return data

这样就能实现所有功能啦!完整的代码如下:

6.完整代码

def txt2mask_new(img_x, img_y, line): # 处理每一行的内容 data = line.split(\n)[0] d = data.split(, -1) # d[-1] = d[-1][0:-1] data = [] for i in range(1, int(len(d) / 2) + 1): data.append([img_y * float(d[2 * i - 1]), img_x * float(d[2 * i])]) data.append(data[0]) data = np.array(data, dtype=np.int32) return data def init_func(): # txt文件夹操作 folder_type = train # folder_type = val img_dir = ../teeth_data/ + folder_type + /image txt_dir = ../teeth_data/ + folder_type + /txt save_dir = ../teeth_data/ + folder_type + /mask files = os.listdir(img_dir) for file in files: name = file[0:-4] img_path = img_dir + / + name + .png txt_path = txt_dir + / + name + .txt img = cv2.imread(img_path) # 读取图片信息 img_x = img.shape[0] img_y = img.shape[1] img_save = np.zeros((img_x, img_y, 1)) # 黑色背景 # 打开文件 file = open(txt_path, "r") # 逐行读取文件内容 for line in file: data = txt2mask_new(img_x, img_y, line) color = 225 cv2.fillPoly(img_save, # 原图画板 [data], # 多边形的点 color=color) save_path = save_dir + / + name + .png cv2.imwrite(save_path, img_save) # 关闭文件 file.close() if __name__ == __main__: init_func()

最终输出的图像如下:

7.示例

声明:本站所有文章               ,如无特殊说明或标注     ,均为本站原创发布          。任何个人或组织     ,在未征得本站同意时               ,禁止复制          、盗用               、采集     、发布本站内容到任何网站     、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益          ,可联系我们进行处理     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
ssh远程启动linux程序(Linux下定制SSH来简化远程访问的方法)