Я читаю документацию по схеме запроса API видения. В источнике изображения я вижу только вариант использования URL-адреса путей изображения GCS. Можно ли использовать внешний URL-адрес изображения, например http://example.com/images/image01.jpg ?
Может ли API видения Google принимать URL-адрес внешнего изображения?
Ответы (5)
Да, это работает отлично:
{
"requests": [
{
"features": [
{
"type": "WEB_DETECTION"
}
],
"image": {
"source": {
"imageUri": "http://i3.kym-cdn.com/photos/images/facebook/000/242/592/1c8.jpg"
}
}
}
]
}
imageUri
всегда должно начинаться с gs://
(указывая на Google Cloud Storage).
- person JJ Geewax; 03.07.2017
Да, это возможно, но ТОЛЬКО с использованием URL-адресов облачного хранилища Google. Попробуй это:
{
"requests": [
{
"image": {
"source": {
gcsImageUri: 'gs://something.com/image',
},
},
"features": ...
"imageContext": ...
},
]
}
Да, вы можете сделать это с любым изображением, если оно меньше 4 МБ. Он не обязательно находиться в Google Cloud Storage.
Вот пример использования клиентской библиотеки Golang:
// Copyright 2016 Google Inc. All rights reserved.
// Use of this source code is governed by the Apache 2.0
// license that can be found in the LICENSE file.
// [START vision_quickstart]
// Sample vision-quickstart uses the Google Cloud Vision API to label an image.
package main
import (
"fmt"
"log"
// Imports the Google Cloud Vision API client package.
vision "cloud.google.com/go/vision/apiv1"
"golang.org/x/net/context"
)
func main() {
ctx := context.Background()
// Creates a client.
client, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
image := vision.NewImageFromURI("https://www.denaligrizzlybear.com/assets/images/scenic-denali.jpg")
labels, err := client.DetectLabels(ctx, image, nil, 10)
if err != nil {
log.Fatalf("Failed to detect labels: %v", err)
}
fmt.Println("Labels:")
for _, label := range labels {
fmt.Println(label.Description)
}
}
Вот функция в Godoc:https://godoc.org/cloud.google.com/go/vision/apiv1#NewImageFromURI
В документах указано:
NewImageFromURI возвращает изображение, которое ссылается на объект в Google Cloud Storage (если uri имеет вид «gs://BUCKET/OBJECT») или на общедоступный URL-адрес.
Ответ для пользователей Python.
def detect_labels_uri(uri):
"""Detects labels in the file located in Google Cloud Storage or on the
Web."""
from google.cloud import vision
client = vision.ImageAnnotatorClient()
image = vision.types.Image()
image.source.image_uri = uri
response = client.label_detection(image=image)
labels = response.label_annotations
print('Labels:')
for label in labels:
print(label.description)
# [END vision_label_detection_gcs]
Да, API Google Cloud Vision ДЕЙСТВИТЕЛЬНО принимает изображения с внешними URL. Я просто использовал это изображение, чтобы получить ярлыки:
python label_sample.py -u "https://upload.wikimedia.org/wikipedia/commons/e/e6/Bleeding_finger.jpg"
Found label: red with 96.47 percent probability!!!!!!!!!!!
Found label: color with 95.46 percent probability!!!!!!!!!!!
Found label: pink with 92.15 percent probability!!!!!!!!!!!
Found label: finger with 91.06 percent probability!!!!!!!!!!!
Found label: hand with 90.45 percent probability!!!!!!!!!!!
Found label: nail with 73.23 percent probability!!!!!!!!!!!
Found label: lip with 73.09 percent probability!!!!!!!!!!!
Found label: jewellery with 68.84 percent probability!!!!!!!!!!!
Found label: produce with 68.39 percent probability!!!!!!!!!!!
Found label: macro photography with 67.86 percent probability!!!!!!!!!!!
Вы должны указать URL-адрес в правильном формате, используя библиотеку urllib, и прокомментировать часть открытия изображения следующим образом:
url = url_file
opener = urllib.urlopen(url)
# with open(photo_file, 'rb') as image:
image_content = base64.b64encode(opener.read())
gs://
).
- person JJ Geewax; 03.07.2017