使用 Watson 视觉识别本地文件
Visual recognition of local file with Watson
我认为这是一个简单的问题。当通过 Python 使用 Watson API 时,我没有任何问题 运行 它可以检测图像 URL。但是,我在处理本地图片文件时遇到了麻烦。
我的代码:
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'
我正在使用 rodeo IDE。我试过将工作目录更改为图像文件夹或输入 C:/...
等,但这些都不起作用。
我认为这是我通过论证的方式,有人可以指导我吗?
本质上,
AttributeError: 'str' object has no attribute 'name'
意思是?
你必须向它传递一个文件而不是文件名。所以尝试:
img2 = instance.classify(images_file=open('a.jpg', 'rb'))
请注意,现在您传递的是带有 open('a.jpg', 'rb')
的文件对象,而不是 str 对象 'a.jpg'
要回答有关错误的问题,python str
对象没有 name
属性,这正是错误所说的。
参考watson python sdk中的例子 github: visual recognition example
好的,所以:
file = open('img_to_classify.jpg', 'rb')
img2 = instance.classify(images_file=file)
print(img2)
我认为这是一个简单的问题。当通过 Python 使用 Watson API 时,我没有任何问题 运行 它可以检测图像 URL。但是,我在处理本地图片文件时遇到了麻烦。
我的代码:
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'
我正在使用 rodeo IDE。我试过将工作目录更改为图像文件夹或输入 C:/...
等,但这些都不起作用。
我认为这是我通过论证的方式,有人可以指导我吗?
本质上,
AttributeError: 'str' object has no attribute 'name'
意思是?
你必须向它传递一个文件而不是文件名。所以尝试:
img2 = instance.classify(images_file=open('a.jpg', 'rb'))
请注意,现在您传递的是带有 open('a.jpg', 'rb')
的文件对象,而不是 str 对象 'a.jpg'
要回答有关错误的问题,python str
对象没有 name
属性,这正是错误所说的。
参考watson python sdk中的例子 github: visual recognition example
好的,所以:
file = open('img_to_classify.jpg', 'rb')
img2 = instance.classify(images_file=file)
print(img2)