位置: IT常识 - 正文
推荐整理分享YOLOv5 txt标签转图像标签(多个标签)(yolov5标签格式),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:yolov5文档,yolo标签含义,yolo中文标签,yolo xml转txt,yolov5标签格式,yolo xml转txt,yolo xml转txt,yolov5标签格式,内容如对您有帮助,希望把文章链接给更多的朋友!
这里每一行是一个标签,原始的图片如图所示 这里有五个龋齿
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 datadef 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.示例下一篇:百度地图API的使用(附案例)(百度地图api的使用)
友情链接: 武汉网站建设