2017-05-11 7 views
0

Es scheint nicht mehr möglich zu sein, öffentliche IMages von IBM Cloud Object Storage mit visueller Watson-Erkennung zu verknüpfen. In der Art der Anrufe zwischen den beiden Diensten wurde etwas geändert. Mein Code unten verwendet, um zu arbeiten, aber ich weiß es sagt, es gibt keine "Bilder gefunden".Watson visuelles Erkennungs-API-Update

import json 
from os.path import join, dirname 
from os import environ 
import sys 
import os 
import boto3 
import pprint 
from boto3 import client 
from botocore.utils import fix_s3_host 
from watson_developer_cloud import VisualRecognitionV3 


param_1= "MY S3 KEY" 
param_2= "MY S3 SECRET KEY " 
param_3= "https://s3-api.us-geo.objectstorage.softlayer.net" 
param_4= "MY BUCKET " 
param_5= "MY WATSON API KEY " 

#The Name of my image I want to analyse that is currently in my bucket and is made public 
objectNMAE='THIEF.jpg' 

s3ressource = client(
    service_name='s3', 
    endpoint_url= param_3, 
    aws_access_key_id= param_1, 
    aws_secret_access_key=param_2, 
    use_ssl=True, 
    ) 
visual_recognition = VisualRecognitionV3('2016-05-20', api_key=param_5) 

#The URL of my image I made public with Public ACL 
urltobeanalysed="%s/%s/%s" % (param_3,param_4,objectNMAE) 

#For Debug, I use an image that can be viewed in a web-browser 
URL2="https://fr.wikipedia.org/wiki/Barack_Obama#/media/File:President_Barack_Obama.jpg" 

print(json.dumps(visual_recognition.classify(images_url=urltobeanalysed), indent=2)) 

Was mehr ist, ist das Bild, das die Öffentlichkeit zugänglich gemacht in meinem Browser nun angezeigt werden verwendet, wenn ich die URL eingeben, wird es das Herunterladen statt .. Irgendwelche Hinweise?

Antwort

0

Nach einigen Untersuchungen in SO, scheint es, dass IBM COS mit AWS S3-Verhalten ausgerichtet ist, änderte sie etwas im Objektheaderverhalten. Ich hatte den Inhaltstyp angeben image/jpeg sein: 'content' => 'image/jpeg'

otherwhise nichts angezeigt wurde. Nein, es funktioniert.

1

Beachten Sie, dass das Bild, das Sie im Code angeben, die URL von wiki Seite ist, die ein großes Bild anzeigt. Der direkte Link zu dem Image, das Sie im API-Aufruf angeben sollten, lautet this one. (Klicken Sie mit der rechten Maustaste auf das Bild in Ihrem Browser und machen Sie etwas wie "Bildposition kopieren", abhängig von Ihrem Browser).

+0

Danke, ich habe Ihre Antwort aufgewertet, aber das ist nur ein Teil des Grundes. Ich möchte von IBM BlueMix COS-Team hören, was sie in Bezug auf die Content-Typ-Operation gemacht haben. Dies änderte meine App und musste einige Zeilen Code zum Aktualisieren hinzufügen. Ich möchte ein Update haben, wenn der APi aktualisiert wird und Details des Updates löschen. Vielen Dank. – MouIdri