Конвертировать строковое изображение JSON в массив 2D - PullRequest
0 голосов
/ 17 мая 2019

У меня проблемы с JSON. Я пытаюсь преобразовать изображение, полученное с помощью json, в двумерный массив. Я попробовал несколько вещей, но ничего не работает.

Вот как я получаю изображение:

@app.route("/<path:fullurl>", methods=['GET', 'POST'])
def main(fullurl):
    height, width = [int(e) for e in fullurl.split('/')]
    jsonResponse = json.loads(request.data.decode('utf-8'))

Я также пытался напечатать jsonResponse ['image'], и вот что я получил:

"data:image/octet-stream;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAF9klEQVR4nO3dv4qU
VxjH8d8l5Ea8jb2CdBbZxlbsvITUAdPkKmxjIQGrpLAIhA1EJaCQTSIiS1jXP7tJMUrmPe5ugjrPM5
z5fOB0y/K81Zdz3jMzCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ7zTJ2YbXaZI3SQ6LngkAttpZ
kr+b17tIn2z4WQFga2xDgC+KMgBM69usjoe7gyvEAFDgMKvw/9
/4CzEAbNBJLj8WF2IA2LCLQizCAFDgvBADAEXsggGgwbgTBgAK/JRlgL
/uHQcAdodjaABo4DIWADQQYABoIMAA0ECAAaCBAANAAwEGgAY+hgQADdYD/KJ5FgDYGesB
/rJ5FgDYCd/H+18AKPciAgwA5dyABoBiT+IGNACUs/sFgGJjfJ
/0jgMA8xuPnu1+AaCA+AJAMUfPAFDM0TMANBBfACjm6BkAij2K3S8AlLoZ8QWAcmN87
/SOAwDze5llfF/2jgMA87sTR88AUG6M783ecQBgfmN8H
/WOAwDzO4ijZwAodT3iCwDlxvje7h0HAOZ3nGV8j3vHAYD53Y6jZwAoN8b3eu84ADC
/Mb4HveMAwHY6yOr97Lv1V5LnSZ5dsv7I6pj5qySfr/2vozh6BoD
/9FveD+anXHfPWd8k+azi4QBgW206wBet35N8UfB8ALCV9pL8nORkbR1ndQR92Xqa5M3b9TEhvrH5R
wSAOY1RfZ3k16zC/t056+na3+5XDgoAs/jQS1f7sfsFgA9yP248A0Cpa3k
/vtdaJwKAHTDG937vOAAwv/Hm81HvOAAwv6vx3hcAyokvABR7mGV8H
/aOAwC7we4XAIqN8b3aOw4AzO8sy
/i+6h0HAOY3xtfRMwBs2Bjfs95xAGB+ryO+AFDqXsQXAErtxTtfACg3xnevdxwAmN
/4Iwv3escBgPm9yjK+J73jAMD8xvie9o4DAPN7HN9yBQClrkR8AaDcUXzWFwBK3cpy93urdxwA2A3r3/N81DwLAOyEwyx3v1d6xwGA+f2SZXx/7B0HAOY3xvfP3nEAYH5jfB/0jgMA8xt/XlB8AWDD9iO+AFBuP//G94feUQBgt9x4uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAPgHU+BofAK5zHIAAAAASUVORK5CYII="

1 Ответ

0 голосов
/ 17 июля 2019

Ну, я разобрался с решением моей проблемы.Все просто, строка, которую я получаю от объекта json, представляющего мое изображение, закодирована в base64, это правда.Поскольку в то время я ничего не знал об объектах json или base64, я не осознавал, что в начале строки есть заголовок.Итак, мое решение таково:

jsonResponse = json.loads(request.data.decode('utf-8'))
image = jsonResponse['image']
png_recovered = base64.decodestring(image.split(',')[1])
f = open("temp.png","w")
f.write(png_recovered)
f.close()
tab = cv2.bitwise_not(cv2.imread("temp.png",0))

Я просто использую запятую, чтобы разделить строку: перед заголовком, после изображения.Затем я записываю его в png-файл и открываю его с помощью cv2, чтобы получить правильный массив numpy.

Функция bitewise_not предназначена только для моего конкретного применения и не требуется.

Надеюсь, это пригодится кому-то в будущем!= D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...