yolo标签格式(YOLOv5 txt标签转图像标签(多个标签))
导读: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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!