下面的脚本涉及python读写txt操作。需要注意的是,向文本写数据时被写入的内容需要是str格式,int、float等格式会报错。
#-*- coding: UTF-8 -*-
# from PIL import Image
import os
def get_filelist(path):
Filelist = []
for home, dirs, files in os.walk(path):
for filename in files:
# 文件名列表,包含完整路径
if "txt" in filename:
Filelist.append(os.path.join(home, filename))
# # 文件名列表,只包含文件名
# Filelist.append( filename)
return Filelist
if __name__ == "__main__":
filePath = './images'
# 指定保存的文件夹
outputPath = './imgs_rotate'
# 获得文件夹下所有文件
# filePath = './imgs/' # 只能获取当前路径下的文件,不能递归
# filenames = os.listdir(filePath)
Filelist = get_filelist(filePath)
print(len(Filelist))
# 迭代所有图片
for filename in Filelist:
print(filename)
# 读取图像 标签
# im = Image.open(filename)
f = open(filename, encoding='utf-8')
label = 0
c_x = 0
c_y = 0
width = 0
height = 0
for line in f.readlines():
print(line)
data = line.replace('\n', '')
substr = data.split()
label = substr[0]
c_x = substr[1]
c_y = substr[2]
width = substr[3]
height = substr[4]
f.close()
# 指定逆时针旋转的角度
# # 逆时针旋转90°
# tmp = c_x
# c_x = c_y
# c_y = str(1 - float(tmp))
# tmp = width
# width = height
# height = tmp
# line_info = [label, ' ', c_x, ' ', c_y, ' ', width, ' ', height, '\n']
# # 逆时针旋转180°
# c_x = str(1 - float(c_x))
# c_y = str(1 - float(c_y))
# line_info = [label, ' ', c_x, ' ', c_y, ' ', width, ' ', height, '\n']
# 逆时针旋转270°
tmp = c_x
c_x = str(1 - float(c_y))
c_y = tmp
tmp = width
width = height
height = tmp
line_info = [label, ' ', c_x, ' ', c_y, ' ', width, ' ', height, '\n']
# 保存
output_path = filename.replace(filePath, outputPath)
outputdir = output_path.rsplit('\\', 1)[0]
if not os.path.exists(outputdir):
os.mkdir(outputdir)
file_lineinfo = open(output_path, 'w', encoding='utf-8')
file_lineinfo.writelines(line_info)
file_lineinfo.close()