Google Cloud Vision API несколько аннотаций изображений в одном вызове API

Я пытаюсь использовать Клиент Cloud Vision API для обнаружения «меток» и лиц на изображении.

Я могу обнаруживать такие ярлыки, как this с ключевой строкой кода:

response = client.label_detection(image=image)
labels = response.label_annotations

и для обнаружения лиц:

response = client.face_detection(image=image)
faces = response.face_annotations

Итак, в настоящее время я могу сделать два вызова API, чтобы получить нужную мне информацию, но я бы хотел объединить их в один вызов API, если это возможно.

Обновлять:

Я нашел метод annotate_image(), который может принимать список функций в этом страница:

response = client.annotate_image({
    'image': {'source': {'image_uri': 'gs://my-test-bucket/image.jpg'}},
    'features': [{'type': vision.enums.Feature.Type.FACE_DETECTION}],
})

Но источник изображения принимает только URL-адрес изображения или путь к нему в Google Cloud. Я хочу провести анализ изображений, которые я храню локально, возможно ли это?


person Kane    schedule 20.01.2019    source источник


Ответы (3)


То, что вы ищете, называется Batching Request, оно позволяет отправлять несколько файлов или несколько функций в одном запросе API. Ознакомьтесь с документацией по пакетным запросам.

Чтобы использовать несколько функций в одном запросе API, взгляните на эту Документация по функции Cloud Vision API. Вы найдете все типы различных функций, которые вы можете запросить.

Я сам немного кодировал, и у меня это сработало. Он считывает изображение из локального хранилища и распечатывает результаты обнаружения LABEL и FACE в одном запросе API. Вы можете найти мой код GitHub здесь.

person Andrei Cusnir    schedule 21.01.2019

Возможно использование локальных изображений. Вы должны поместить в запрос байты изображения («контент») вместо «источник». https://cloud.google.com/vision/docs/reference/rest/v1/AnnotateImageRequest#Image

person Brendan    schedule 03.08.2019

Вот код для v2 API:

import io
from google.cloud import vision
from google.protobuf.json_format import MessageToDict, MessageToJson


with io.open("a_pic.jpg", "rb") as image_file:
    content = image_file.read()

image = vision.Image(content=content)

request = {
    "image": image,
    "features": [
        {"type_": vision.Feature.Type.FACE_DETECTION},
        {"type_": vision.Feature.Type.LABEL_DETECTION},
        {"type_": vision.Feature.Type.IMAGE_PROPERTIES},
    ],
}

response = client.annotate_image(request)
print(MessageToDict(response._pb))
person Feng Mai    schedule 05.04.2021