1.第一步是通过软件 对图片 进行初步处理 标注关键点坐标 得到的就是对应的txt文件;
2.但是是大量的 这个初步txt文件里面的内容是关于图片的相对坐标;
3.需要进一步处理转换 就是所需求的转换;
4.转换用到的数值 就是图片属性的尺寸大小 即宽度与高度 ;(有不同的图片来源,此处转换数值可以进行自定义);
5.用相对坐标去乘以图片的宽、高 得到的数值结果取整数,最后再转换txt文件格式为.pts格式就是最终要求。
import os
def trans(root_dir):
for f in os.listdir(root_dir):
if f.endswith(".txt"):
f_name = os.path.splitext(f)[0]
f_path = os.path.join(root_dir, f)
pts_f = os.path.join(root_dir, f"{f_name}.pts")
print(f"Trans {f} to {os.path.basename(pts_f)}")
with open(f_path, "r") as rf, open(pts_f, "w")as wf:
lines = [x.strip() for x in rf.readlines()[1:]]
print(lines)
multis = [1262, 948] # 请设置转换图片宽、高数值
# lines = [[x.split(".")[-1][:3] for x in y.split(' ')] for y in lines]
lines = [[str(multi * int(x.split(".")[-1][:3])) for multi, x in zip(multis, y.split(' '))] for y in
lines]
print(lines)
# lines = [[x.split('.')[-1][:3] for x in y.split(' ')] for y in lines]
for line in lines:
wf.write(' '.join(line) + '\n')
print("Done!")
if __name__ == '__main__':
# trans("txt所在的文件夹")
trans(r"H:\study\test")
print("转换完成!")
#望解答
import os
import math
def trans(root_dir, height):
for f in os.listdir(root_dir):
if f.endswith(".txt"):
f_name = os.path.splitext(f)[0]
f_path = os.path.join(root_dir, f)
pts_f = os.path.join(root_dir, f"{f_name}.pts")
print(f"Trans {f} to {os.path.basename(pts_f)}")
with open(f_path, "r") as rf, open(pts_f, "w")as wf:
lines = [x.strip() for x in rf.readlines()[1:]]
print(lines)
multis = [1262, height]
number = [[str(float(x)) for multi, x in zip(multis, y.split(' '))] for y in lines]
number1 = [[str(multi * float(x)) for multi, x in zip(multis, y.split(' '))] for y in lines]
print(number)
print(number1)
# int 向上取整
int_floor = [[str(math.floor(multi * float(x))) for multi, x in zip(multis, y.split(' '))] for y in
lines]
print('int 向上取整:', int_floor)
# int 向下取整
lines_ceil = [[str(math.ceil(multi * float(x))) for multi, x in zip(multis, y.split(' '))] for y in
lines]
print('int 向下取整:', lines_ceil)
# 结果写入.pts文件
for line in lines_ceil:
line = str(line).replace("[", '').replace(']', '').replace('\'', '').replace(",", ' ') + '\n'
wf.write(line)
# 去掉文件末尾多余的空行
with open(pts_f, "r") as f: # 打开文件
strs = str(f.read()) # 读取文件
strs = strs.rstrip("\n")
with open(pts_f, "w") as f2: # 写入新文件
f2.write(strs)
if __name__ == '__main__':
height = 948
trans(r"txts/", height)
你这不是把任务分解的挺好,代码也写了一部分,你是卡在哪里了呢,还是单纯的并不想付出任何努力只想要完整代码