Как отправить изображения в памяти в Visual Recognition, используя Python - PullRequest
0 голосов
/ 29 апреля 2019

Я впервые работаю с IBM Watson Visual Recognition. Мое приложение Python должно передавать сервису изображения, которыми оно управляет, в памяти. Тем не менее, довольно ограниченная документация и пример кода, которые я смог найти в IBM, показывает вызовы API как ссылки на сохраненные файлы. Файл передается на вызов как io.BufferedReader.

with open(car_path, 'rb') as images_file:
    car_results = service.classify(
        images_file=images_file,
        threshold='0.1',
        classifier_ids=['default']
    ).get_result()

Мое приложение будет работать с изображениями из памяти, и мне не нужно сохранять каждое изображение в файл, прежде чем я смогу позвонить. Я попытался заменить BufferedReader потоком io.BytesIO, и я получил сообщение об ошибке, в котором я пропустил параметр images_filename. Когда я добавил ложное имя файла (например, «xyz123.jpg»), я получил следующую ошибку:

TypeError: a bytes-like object is required, not 'float'

Можно ли выполнять вызовы API анализа с использованием изображения из памяти? Если да, то как?

EDIT:

По сути, это то, что я пытаюсь сделать:

def analyze_image(pillow_img: PIL.Image):
    byte_stream = io.BytesIO()
    pillow_img.save(byte_stream, format='JPEG')
    bytes_img = byte_stream.getvalue()

    watson_vr = VisualRecognitionV3(
        '2019-04-30',
        url='https://gateway.watsonplatform.net/visual-recognition/api',
        iam_apikey='<API KEY>'
    )

    result_json = watson_vr.classify(
        images_file=bytes_img,
        threshold=0.1,
        classifier_ids=['default']
    ).get_result()

Спасибо

1 Ответ

0 голосов
/ 02 мая 2019

Как насчет

bytes_img = byte_stream.getbuffer()
...
result_json = watson_vr.classify(
        images_file=bytes_img,
        threshold=0.1,
        classifier_ids=['default']
    ).get_result()

или

with byte_stream as images_file:
    result_json = watson_vr.classify(
        images_file=images_file,
        threshold='0.1',
        classifier_ids=['default']
    ).get_result()

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