将数据集中的txt文件中的坐标转换为mask图像

# -*- 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")

你可能感兴趣的:(python,SCUT,python)