質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4939閲覧

jsonファイルの座標をテキストファイルに変換したいのですが..

ponzuuuuu

総合スコア19

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/07 08:20

編集2019/08/07 08:46

###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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

json_path='C:Users/PC017/learn/00ac59f09115dc03edfabfd6c85de434-asset.json'

C:/Users/PC017/learn/00ac59f09115dc03edfabfd6c85de434-asset.json
ではないでしょうか。

投稿2019/08/07 08:24

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ponzuuuuu

2019/08/07 08:34

回答ありがとうございます! その部分を直した結果,今度は KeyError:'visitedFrames'と表示されました. これはどこのエラーなのでしょうか?
kazto

2019/08/07 08:48

エラーは全文を提示してください。 とはいえ、'visitedFrames' で検索すると見つかるのは1か所なので。 「dic = json.load(f)」で読み込んだJsonファイル内に'visitedFrames'というキーがありません、ということです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問