实现的效果如下图所示,将txt标签文件转化为掩码模板。需要注意的是,我写的保存的掩码模板和图像的名称一样,你如果觉得不合适可以修改。
需要修改对应的,图像地址、txt掩码文件地址以及你想保存的掩码地址。
img_dir = r'../DRIONS-DB/DRIONS-DB/images' txt_mask = r'../DRIONS-DB/DRIONS-DB/experts_anotation' mask_save_path = r'../DRIONS-DB/DRIONS-DB/labels'
# coding:utf8
import os
import cv2
import numpy as np
from tqdm import tqdm
img_dir = r'../DRIONS-DB/DRIONS-DB/images'
txt_mask = r'../DRIONS-DB/DRIONS-DB/experts_anotation'
mask_save_path = r'../DRIONS-DB/DRIONS-DB/labels'
def visualize_txt(image_name, label_name, name):
with open(label_name, "r") as file:
lines = file.readlines()
# 创建一个空白图像
img = cv2.imread(image_name)
height, width = img.shape[:2]
mask = np.zeros((height, width), dtype=np.uint8)
points = [(int(float(point.split(',')[0])), int(float(point.split(',')[1]))) for point in lines]
cv2.fillPoly(mask, [np.array(points)], color=255)
# # 显示或保存掩码
# cv2.imshow("Mask", mask)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# 如果需要保存为图像文件
save_path = os.path.join(mask_save_path, name.split('.')[0] + '.png')
cv2.imwrite(save_path, mask)
if __name__ == '__main__':
img_list = os.listdir(img_dir)
label_list = os.listdir(txt_mask)
for i, j in enumerate(tqdm(img_list)):
visualize_txt(os.path.join(img_dir, img_list[i]), os.path.join(txt_mask, label_list[i]), img_list[i])