はじめに
#クラッピーチャレンジ Advent Calendar 2020 8日目の記事です。
クラッピーが手元にないので、過去に撮影したクラッピーの画像をAzure Computer Visionの画像分析APIに投げてみました。画像分析APIを用いると、画像の説明文を生成してくれます。
HoloLens2でもこんな記事「HoloLens2 × Azure Cognitive Services(画像分析APIで画像説明文生成)」を書いているので見てみてください。
開発環境
- Windows 10
- Python 3.6
- Azure
導入
画像分析APIに投げるPythonプログラムは下記になります。AzureポータルからComputer Vision APIを作成し、エンドポイントとキーをコピペしてください。
analyze.py
import os
import sys
import requests
# If you are using a Jupyter notebook, uncomment the following line.
# %matplotlib inline
import matplotlib.pyplot as plt
from PIL import Image
from io import BytesIO
import os
subscription_key = "<Insert Your API Key>"
endpoint = "https://<Insert Your Resource Name>.cognitiveservices.azure.com/"
analyze_url = endpoint + "vision/v3.1/analyze"
# Set image_path to the local path of an image that you want to analyze.
# Sample images are here, if needed:
# https://github.com/Azure-Samples/cognitive-services-sample-data-files/tree/master/ComputerVision/Images
dirname = "clappy/"
files = os.listdir(dirname)
for file in files:
# Read the image into a byte array
image_data = open(dirname + file, "rb").read()
headers = {'Ocp-Apim-Subscription-Key': subscription_key,
'Content-Type': 'application/octet-stream'}
params = {'visualFeatures': 'Categories,Description,Color'}
response = requests.post(
analyze_url, headers=headers, params=params, data=image_data)
response.raise_for_status()
# The 'analysis' object contains various fields that describe the image. The most
# relevant caption for the image is obtained from the 'description' property.
analysis = response.json()
print(analysis)
image_caption = analysis["description"]["captions"][0]["text"].capitalize()
# Display the image and overlay it with the caption.
image = Image.open(BytesIO(image_data))
fig = plt.figure()
plt.imshow(image)
plt.axis("off")
_ = plt.title(image_caption, size="x-large", y=-0.1)
# plt.show()
fig.savefig("result/"+file)
実行
まとめ
割と正確にtoyだった。