2016-03-04 1 views
7

Я читаю документацию по схеме запроса API видения. В источнике изображения я вижу только вариант использования url путей изображения GCS. Можно ли использовать внешний URL-адрес изображения, например http://example.com/images/image01.jpg?Может ли API-интерфейс google google использовать внешний URL-адрес изображения?

+0

Какой API вы упомянули? Вот этот? https://developers.google.com/vision/ – pm0733464

+0

https://cloud.google.com/vision/ Я считаю, что оба облачных видения службы в backend. –

+0

Вы нашли решение для загрузки внешних изображений? – rwehresmann

ответ

3

Да, это возможно, но ТОЛЬКО с использованием URL-адресов облачных хранилищ Google. Попробуйте это:

{ 
    "requests": [ 
    { 
     "image": { 
     "source": { 
      gcsImageUri: 'gs://something.com/image', 
     }, 
     }, 
     "features": ... 
     "imageContext": ... 
    }, 
    ] 
} 
+1

Спасибо. Это проблема, с которой я пытаюсь работать, так что мне не нужно каждый раз загружать GS. Я думаю, это почти то же самое, загрузка непосредственно в службу изображения или загрузка в GS сначала, а затем ее обработка. Еще один дополнительный вызов API для загрузки в GS до обработки и удаления из GS после обработки. –

+0

В зависимости от используемого языка могут быть некоторые полезные методы для получения изображения через http и для получения изображения base64 изображения, которое вы можете передать в google api. – Belfordz

-4

Да, Google Cloud Видения API НЕ принимает внешние изображения URL. Я просто использовал this image, чтобы получить метки:

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!!!!!!!!!!! 

Вы должны дать ему адрес в правильном формате, используя URLLIB библиотеки и комментарии часть открытия изображения, как это:

url = url_file 
opener = urllib.urlopen(url) 

# with open(photo_file, 'rb') as image: 
image_content = base64.b64encode(opener.read()) 
+0

Я не понимаю причину моего ответа. – muglikar

+1

Вопрос: «Может ли API-интерфейс google-зрения принимать внешний URL-адрес изображения?». Другими словами: может ли API Google принимать URL-адрес с любого внешнего сервера (например, imgur, flickr, s3) и возвращать ответ на это изображение. Если бы вопрос был «Как загрузить любой ресурс изображения в Интернете и обработать его с помощью Google Vision, тогда ваш ответ будет действительным. – mmla

+0

Вы неверно истолковали мой ответ, а также мое решение проблемы. Мое решение делает именно то, что вопрос спросил, допустим ли URL-адрес с любого внешнего сервера и возвращает ответ на это изображение. – muglikar

5

Да, это отлично работает:

{ 
    "requests": [ 
    { 
     "features": [ 
     { 
      "type": "WEB_DETECTION" 
     } 
     ], 
     "image": { 
     "source": { 
      "imageUri": "http://i3.kym-cdn.com/photos/images/facebook/000/242/592/1c8.jpg" 
     } 
     } 
    } 
    ] 
} 
+0

Если это работает, это действительно не должно (в противном случае люди могли бы использовать Vision API для хостов изображений DOS)! Поле 'imageUri' всегда должно начинаться с' gs: // '(указывая на облачное хранилище Google). –

+0

Это работало отлично для меня, когда я тестировал API в прошлом месяце – JacopKane

0

Да, вы можете сделать это с любым изображением, если оно меньше 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 Облако хранения (когда uri имеет форму «gs: // BUCKET/OBJECT») или по адресу общедоступный URL.

Смежные вопросы