#間違えて新規にアノテーションしちゃった!
同じ画像に対していくつもtxt作っちゃうんですよね。
そういうことあると思います。
アノテーションをコピーして追加or新規作成します。
##how to
フォルダを指定して、内部にあるテキストに対して無差別に動作します。
train.txt
とかclass.txt
とかあったら避難させてください。
番号ごとにコピーしたあと、同じ名前の txt を探して行を追加します。
arm_anno
フォルダにあるアノテーションの2番
をbody_anno
にある同じ画像のアノテーションtxtに追加したければ、
$ python3 yolocopy.py arm_anno body_anno 2
となります。
##code
yolocopy.py
import glob
import os
import sys
path = os.getcwd()
_, infile, outfile, inline = sys.argv # target_file, output_file, target_number
for nowtxt in glob.glob(infile + "/*.txt"):
textline = []
with open(nowtxt) as f:
l_strip = [s.strip() for s in f.readlines()]
for k in l_strip:
if str(k[0]) == str(inline):
textline.append(k)
basename = os.path.basename(nowtxt) #get name
with open(outfile +'/'+ basename, mode='a') as f:
for k in textline:
f.write('\n' + str(k))
trueline = []
with open(outfile +'/'+ basename) as f:
l_strip = [s.strip() for s in f.readlines()]
for k in l_strip:
if len(str(k))>0:
trueline.append(k)
#os.remove(outfile +'/'+ basename)
with open(outfile +'/'+ basename, mode='w') as f:
f.write('\n'.join(trueline))
##今後の改良点
同名の画像が存在するtxtに絞ればもっと手軽だと思うんですよね、面倒なのでしませんが。