###jsonファイルの座標をテキストに変換したい
yoloを用いて画像判別を行いたいと考えています.そこでアノテーションを行った画像をjsonファイルとして保存し,その座標をテキストファイルに記載したいのですが,そのコードが作動しません.
発生している問題・エラーメッセージ
KeyError Traceback (most recent call last) <ipython-input-24-8b5d4622bced> in <module>() 75 76 if __name__ == '__main__': ---> 77 _main() <ipython-input-24-8b5d4622bced> in _main() 71 image_dir=image_dir, 72 train_txt_save_path=train_txt_save_path, ---> 73 classes_txt_save_path=classes_txt_save_path 74 ) 75 <ipython-input-24-8b5d4622bced> in convert_vott_to_kerasyolo3txt(json_path, image_dir, train_txt_save_path, classes_txt_save_path) 11 tag_set = set() 12 ---> 13 visited_frames = dic['visitedFrames'] 14 15 frames = dic['frames'] KeyError: 'visitedFrames'
該当のソースコード
import json import os def convert_vott_to_kerasyolo3txt(json_path, image_dir, train_txt_save_path, classes_txt_save_path): row_list = [] with open(json_path) as f: dic = json.load(f) tag_set = set() visited_frames = dic['visitedFrames'] frames = dic['frames'] frame_keys = frames.keys() for visited in visited_frames: if visited in frame_keys: # framesに存在するkeyのみ img_annotation_list = frames[visited] for item in img_annotation_list: tags = item['tags'] for t in tags: tag_set.add(t) tag_dic = {} tag_list = list(tag_set) tag_list.sort() for i, tag in enumerate(tag_list): tag_dic[tag] = i for visited in visited_frames: if visited in frame_keys: # framesに存在するkeyのみ img_annotation_list = frames[visited] row_text = os.path.join(image_dir, visited) for item in img_annotation_list: box = item['box'] tags = item['tags'] for tag in tags: row_text = row_text + ' {},{},{},{},{}'.format(int(box['x1']),int(box['y1']),int(box['x2']),int(box['y2']), int(tag_dic[tag])) if len(img_annotation_list) != 0: row_list.append(row_text) train_txt = '\n'.join(row_list) print(train_txt) f = open(train_txt_save_path, 'w') f.write(train_txt) f.close() classes_txt = '\n'.join(tag_list) f = open(classes_txt_save_path, 'w') f.write(classes_txt) f.close() def _main(): json_path='C:/Users/PC017/learn/00ac59f09115dc03edfabfd6c85de434-asset.json' image_dir='C:/Users/PC017/learn/' train_txt_save_path='C:/Users/PC017/learn/my_train.txt' classes_txt_save_path='C:/Users/PC017/learn/my_classes.txt' convert_vott_to_kerasyolo3txt( json_path=json_path, image_dir=image_dir, train_txt_save_path=train_txt_save_path, classes_txt_save_path=classes_txt_save_path ) if __name__ == '__main__': _main()
初心者ですので,詳しく教えてくれると助かります..
補足情報(FW/ツールのバージョンなど)
このコードは「自前の画像をVoTTでアノテーションしてkeras-yolo3に呪腕のハサンを学習させる」のサイトのコードを用いています.
サイト:https://qiita.com/kgym/items/c73f4d3194ced9a9ee3f
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/07 08:34
2019/08/07 08:48