2017-02-21 15 views
0

Я считаю, что это простой вопрос. При использовании API Watson через Python у меня нет проблем с его запуском, чтобы обнаружить URL-адрес изображения. Тем не менее, у меня есть проблемы с этим для локальных файлов изображений.Визуальное распознавание локального файла с помощью Watson

Мой код:

from watson_developer_cloud import VisualRecognitionV3 as vr 
instance = vr('2016-05-20', api_key='Your-Api-key') 
img2 = instance.classify(images_file='a.jpg') 
print(img2) 

Выход ошибки:

AttributeError: 'str' object has no attribute 'name' 
--------------------------------------------------------------------------- AttributeError       Traceback (most recent call last) <ipython-input-173-79c8a4eee873> in <module>() 
----> 1 img2 = instance.classify(images_file='a.jpg') C:\Program Files\Anaconda3\lib\site-packages\watson_developer_cloud\visual_recognition_v3.py in classify(self, images_file, images_url, classifier_ids, owners, threshold) 
    154     'owners': owners, 'threshold': threshold} 
    155   return self._image_call('/v3/classify', images_file, images_url, 
--> 156         params) 
    157 
    158  def detect_faces(self, images_file=None, images_url=None): C:\Program Files\Anaconda3\lib\site-packages\watson_developer_cloud\visual_recognition_v3.py in _image_call(self, url, images_file, images_url, params) 

    124         accept_json=True) 
    125   else: 
--> 126    filename = images_file.name 
    127    mime_type = mimetypes.guess_type(
    128     filename)[0] or 'application/octet-stream' 

AttributeError: 'str' object has no attribute 'name' 

Я использую родео IDE. Я попытался сменить рабочий каталог на папку с изображениями или ввести C:/... и т. Д., Но ни одна из них не работает.

Я верю, что это способ передать аргумент, может ли кто-нибудь меня вести?

По существу, что делает

AttributeError: 'str' object has no attribute 'name' 

Mean?

ответ

1

вы должны передать ему файл, а не имя файла. так попробовать:

img2 = instance.classify(images_file=open('a.jpg', 'rb')) 

уведомление, что теперь вы передаете объект файла с open('a.jpg', 'rb'), а не объект ул 'a.jpg' Чтобы ответить на вопрос об ошибке, питон str объекты не имеют name атрибуты, которые точно что говорит ошибка.

ссылаются на пример на Ватсон питон SDk GitHub: visual recognition example

+0

спасибо за быстрый ответ. На данный момент я не очень разбираюсь в python. Однако я получаю эту ошибку: UnicodeDecodeError: кодек «charmap» не может декодировать байт 0x81 в позиции 240: символьные карты до Germ

+0

Я отредактировал свой ответ, чтобы отразить тот факт, что вам может потребоваться прочитать файл как двоичный. Обратите внимание, что опция «rb» (чтение двоичного) добавлена ​​в открытую функцию. – putonspectacles

+0

Большое вам спасибо, я запустил python с фоном R. Поэтому мне кажется, что мне кажется. Таким образом, для любого аргумента, требующего передачи файла, я должен сделать открытый вариант? И откуда вы поняли, что это должно быть «rb»? Я считаю, что для меня было бы полезно изучить процесс мышления :) – Germ

0

нормально, так:

file = open('img_to_classify.jpg', 'rb') 
img2 = instance.classify(images_file=file) 
print(img2)