【问题标题】:Number plate detection JSON dataset车牌检测 JSON 数据集
【发布时间】:2019-09-16 16:59:43
【问题描述】:

我是 JSON 新手。我正在做一个车牌检测项目。 我有一个表格的数据集:

{"content": "http://com.dataturks.a96-i23.open.s3.amazonaws.com/2c9fafb0646e9cf9016473f1a561002a/77d1f81a-bee6-487c-aff2-0efa31a9925c____bd7f7862-d727-11e7-ad30-e18a56154311.jpg.jpeg","annotation":[{"label":["number_plate"],"notes":"","points":[{"x":0.7220843672456576,"y":0.5879828326180258},{"x":0.8684863523573201,"y":0.6888412017167382}],"imageWidth":806,"imageHeight":466}],"extras":null},
{"content": "http://com.dataturks.a96-i23.open.s3.amazonaws.com/2c9fafb0646e9cf9016473f1a561002a/4eb236a3-6547-4103-b46f-3756d21128a9___06-Sanjay-Dutt.jpg.jpeg","annotation":[{"label":["number_plate"],"notes":"","points":[{"x":0.16194331983805668,"y":0.8507795100222717},{"x":0.582995951417004,"y":1}],"imageWidth":494,"imageHeight":449}],"extras":null},

总共有 240 个数据块。 我想对上述数据集做两件事。 首先,我需要从每个块中下载所有图像,其次,需要将“points”列的值获取到文本文件中。

我在获取列的值时遇到问题。

import json
jsonFile = open('Indian_Number_plates.json', 'r')
x = json.load(jsonFile)
for criteria in x['annotation']:
    for key, value in criteria.iteritems():
        print(key, 'is:', value)
    print('')

我已经编写了上面的代码来获取“注释”下的所有值。 但是,得到以下错误

Traceback (most recent call last):
  File "prac.py", line 13, in <module>
    x = json.load(jsonFile)
  File "C:\python364\Lib\json\__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\python364\Lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "C:\python364\Lib\json\decoder.py", line 342, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 394 (char 393)

请帮助我获取“点”列的值以及从“内容”部分的链接下载图像。

【问题讨论】:

标签: python json image annotations


【解决方案1】:

i found this answer 搜索时。本质上,您可以读取一个对象,在 JSON 看到意外对象时捕获异常,然后查找/重新解析并构建对象列表。

在 Java 中,我只是告诉你使用 Jackson 和他们的 SAX 风格的流接口,因为我已经这样做来读取像这样格式化的对象列表 - 如果 python 中的 JSON 有一个流 api,我会使用它而不是异常处理程序解决方法

【讨论】:

    【解决方案2】:

    出现错误是因为您的文件包含两条或更多记录:

    {"content": "http://com.dataturks.a96- } ..... {"content": .....
    

    要解决这个问题,您应该重新格式化您的 json,以便所有记录都包含在一个数组中:

    { "data" :  [ {"content": "http://com.dataturks.a96- .... },{"content":... }]}
    

    下载图片,提取图片名称和网址并使用请求:

    import requests
    
    with open(image_name, 'wb') as handle:
            response = requests.get(pic_url, stream=True)
    
            if not response.ok:
                print response
    
            for block in response.iter_content(1024):
                if not block:
                    break
    
                handle.write(block)
    

    【讨论】:

      猜你喜欢
      • 2011-06-11
      • 2017-07-05
      • 2012-07-29
      • 2011-06-14
      • 1970-01-01
      • 2016-12-28
      • 2018-06-10
      • 2018-10-22
      • 1970-01-01
      相关资源
      最近更新 更多