繁体   English   中英

IBM Watson 图像识别

[英]IBM watson image recognition

我是 Watson 的新手,因为我正在学习 moog 课程。 我正在浏览遇到问题的示例,但我无法弄清楚。 我不断收到错误 403。任何帮助将不胜感激。 谢谢你

import cv2
import urllib.request
from matplotlib import pyplot as plt
from matplotlib import rcParams
from ibm_watson import VisualRecognitionV3
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

my_apikey = 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'

# Paste your API key for IBM Watson Visual Recognition below:
authenticator = IAMAuthenticator(my_apikey)
visrec = VisualRecognitionV3("2020-07-30", authenticator=authenticator)

def plt_image(image_url, size=(10, 8)):
# Downloads an image from a URL, and displays it in the notebook
    urllib.request.urlretrieve(image_url, "image.jpg")  # downloads file as "image.jpg"
    image = cv2.imread("image.jpg")

# If image is in color, then correct color coding from BGR to RGB
    if len(image.shape) == 3:
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

rcParams['figure.figsize'] = size[0], size[1]  # set image display size

plt.axis("off")
plt.imshow(image, cmap="Greys_r")
plt.show()


from pandas.io.json import json_normalize


def getdf_visrec(url, apikey=my_apikey):
    json_result = visrec.classify(url=url, threshold='0.6', classifier_ids= 'E36').get_result()

    json_classes = json_result['images'][0]['classifiers'][0]['classes']

    df = json_normalize(json_classes).sort_values('score', ascending=False).reset_index(drop=True)

    return df






url = 'http://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/CV0101/Images/76011_MAIN._AC_SS190_V1446845310_.jpg'
plt_image(url)
getdf_visrec(url,my_apikey)

这是我运行它时得到的错误代码

ERROR:root:Forbidden
Traceback (most recent call last):
File "C:\Users\isaip\OneDrive\College\python pp\venv\lib\site-packages\ibm_cloud_sdk_core            \   base_service.py", line 229, in send
response.status_code, error_message, http_response=response)
ibm_cloud_sdk_core.api_exception.ApiException: Error: Forbidden, Code: 403
Traceback (most recent call last):
File "C:/Users/isaip/OneDrive/Desktop/.idea/pythonpy/watson.py", line 49, in <module>
getdf_visrec(url,my_apikey)
File "C:/Users/isaip/OneDrive/Desktop/.idea/pythonpy/watson.py", line 34, in getdf_visrec
json_result = visrec.classify(url=url, threshold='0.6', classifier_ids= 'E36').get_result()
File "C:\Users\isaip\OneDrive\College\python pp\venv\lib\site-packages\ibm_watson\  visual_recognition_v3.py", line 183, in classify
response = self.send(request)
File "C:\Users\isaip\OneDrive\College\python pp\venv\lib\site-packages\ibm_cloud_sdk_core\  base_service.py", line 229, in send
response.status_code, error_message, http_response=response)
ibm_cloud_sdk_core.api_exception.ApiException: Error: Forbidden, Code: 403

进程以退出代码 1 结束

在 Watson 服务上获得 403 是很常见的。 当密钥与端点不匹配时会发生这种情况,基本上是当您使用不正确的密钥、不正确的端点甚至两者都不正确时。

查看 API 文档,了解如何设置 url 端点。

from ibm_watson import VisualRecognitionV3
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator('{apikey}')
visual_recognition = VisualRecognitionV3(
    version='{version}',
    authenticator=authenticator
)

visual_recognition.set_service_url('{url}')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM