# -*- coding: utf-8 -*-
# @Time:2021/10/13
# @Author:phe
import os
import cv2
import numpy as np
#读取path中对应的txt文件,并将txt文件中的坐标转换为mask图像,存入savepath路径中。
def txtToImg(path,savepath):
files = []
for file in os.listdir(path):
if file.endswith(".txt"):
files.append(path + "\\" + file)
# print(file[:-4]) #每个txt的名称
# print(type(files)) #list
# file_abs 是每个txt文件的绝对路径
for file_abs in files:
print(file_abs) # 每个txt文件的绝对路径
print(file_abs[32:-4]) # 每个txt文件的名称
# 按行读取txt文件
f = open(file_abs)
line = f.readline() # 读出line是str类型
# 生成一张512*512像素照片 其中背景全为1
Img = np.ones((512, 512), dtype=np.uint8)
# Img = Img * 255 # 使得背景全黑
while line:
str = line.strip('\n') # 将每行结尾的\n删除
list = str.split(',') # 将str转换诶list
results = np.array(list, np.int32) # 将list转换为numpy.ndarray
mask = results.reshape((-1, 1, 2)) # 对序列第一个数设置为x,第二个数设置为y,依次类推
a = cv2.polylines(Img, [mask], True, 0) # 将坐标点连接起来,线段颜色是0
cv2.fillPoly(Img, [mask], color=0) # 候选框中的范围用像素0填充
filepath = savepath + "\\" + file_abs[32:-4] + ".jpg"
cv2.imwrite(filepath, a) # 将生成图片a存入路径。
line = f.readline()
f.close()
txtToImg(r"D:\PycharmProjects\task\all_gts",r"D:\PycharmProjects\task\mask")