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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

2054閲覧

python3でのjsonファイルの読み込みについて

Nao1117

総合スコア17

JSON

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

Python 3.x

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

0グッド

0クリップ

投稿2018/09/12 00:39

編集2018/09/12 00:58

前提・実現したいこと

YOLOを用いて認識を行ったあとに、その物体の位置情報を用いて
デフォルメされた別の画像を作成しようとしています。

pythonのコーディングの初心者なのとjsonファイルというものを初めて触るので
どのように読み込んだらよいか分かりません。

もしお時間あればその先の部分も
自分がやりたいことを表現してみたはいいものの
文法的に合っていないと思われるので訂正していただけると幸いです。

発生している問題・エラーメッセージ

20行目の
print(result)
では
[{'label': 'car', 'confidence': 0.84797806, 'topleft': {'x': 80, 'y': 113},
'bottomright': {'x': 555, 'y': 467}}, {'label': 'truck', 'confidence': 0.8014206
, 'topleft': {'x': 462, 'y': 81}, 'bottomright': {'x': 694, 'y': 167}}]
と出力されます。

26行目でこれを構造体のように扱いたいのですがjson.loadではエラーを吐きます。

print(result[0])で
[{'label': 'car', 'confidence': 0.84797806, 'topleft': {'x': 80, 'y': 113},'bottomright': {'x': 555, 'y': 467}}]
にアクセスはできたのですが、labelの情報をif文の条件に使い、x,yの座標を適宜呼び出す方法が分かりません。

該当のソースコード

from darkflow.net.build import TFNet
import cv2
import numpy as np
import json

print(result)

% 作成したい画像の下地の画像の読み込み
bImg = cv2.imread("../../image/road1.jpg")
bSize = tuple([bImg.shape[1], bImg.shape[0]])

ob_dict = json.load(result)

for x in len(result):

% 各ラベルに対応した出力の画像の取得 if result(x) == 'car': pngImage = cv2.imread("../../image/toyota_back2.png" , cv2.IMREAD_UNCHANGED) elif result(x) == 'person': pngImage = cv2.imread("../../image/man.png" , cv2.IMREAD_UNCHANGED) % 物体を描画したときの倍率の計算 scale = (ob_dict(bottomright,x) - ob_dect(topleft,x)) * (ob_dict(bottomright,y) - ob_dect(topleft,y)) / (bSize[0] * bsize[1]) % 画像の書き込み resultImage = transparentOverlay(bImg,pngImage,(ob_dect(bottomright,x),ob_dect(bottomright,y)),scale)

補足情報(FW/ツールのバージョンなど)

yoloはdarkflowでtensorflowベースで動かしています。

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

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

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

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

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

tachikoma

2018/09/12 00:46

result[0]でアクセスできませんでしたか。たぶんresultは文字列じゃなくて、dictのlistだと思うなぁ。
guest

回答1

0

ベストアンサー

やりたいことはこんな感じでしょうか??

python

1 2import json 3 4aa = [{'label': 'car', 'confidence': 0.84797806, 'topleft': {'x': 80, 'y': 113},'bottomright': {'x': 555, 'y': 467}}, {'label': 'truck', 'confidence': 0.8014206, 'topleft': {'x': 462, 'y': 81}, 'bottomright': {'x': 694, 'y': 167}}] 5 6bb = json.dumps(aa) 7cc = json.loads(bb) 8 9print(cc[0]["topleft"]["x"]) 10

投稿2018/09/12 05:08

kakimochi

総合スコア110

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

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

Nao1117

2018/09/12 16:31 編集

result[0]["topleft"]["x"]で直接読み込めました ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問