【Python】Computer Vision APIでサムネイルを作成する

Python
この記事は約5分で読めます。

Microsoftが提供しているCognitive ServicesのComputer Visionは
画像や動画に対して利用できるAPIサービスです。

Computer Vision | Microsoft Azure
Azure Cognitive Service である Computer Vision を利用してイメージから有益な情報を抽出し、コンテンツを分析します。

画像の分析やOCRなどの機能がありますがComputer Visionの機能のなかで
サムネイル画像を作成できるユニークな機能があります。

他のサービスでは同様の機能が見当たらず、利用してみたら便利でした。

Computer Vision APIでサムネイルを作成する利点

元画像と縦横の比率が違ってもサムネイルを作成できる

こちらの画像は横600x縦900の画像です。アスペクト比は2:3です。

Photo by NastyaSensei Sens from Pexels

アスペクト比を無視して画像をリサイズすると、いびつな形になってしまいます。
下記の画像は横500x縦600にリサイズした画像です。
アスペクト比を5:6にしたので、画像が縦に潰れてしまっています。

 

Computer Vision APIを利用するとトリミングとリサイズを組み合わせて
指定したサイズのきれいなサムネイルが出来上がります。

 

手動でリサイズした画像とComputer Vision APIを利用した画像を並べてみました。
左側が手動で作成した画像で右側がComputer Vision APIを利用して作成した画像です。
右側の画像が縦に潰れず、サムネイルを作成できていることが分かるかと思います。

 

関心領域を保ちつつサムネイルの作成ができる

Computer Vision APIのサムネイルの生成でスマートトリミングを利用すると
画像の中の重要な領域を中心にして、サムネイルを作成してくれます。

こちらの画像からサムネイルを作成する場合、花とコーヒーカップが画像の
重要な領域なので、2つの物体を含めてサムネイルを作成したいはずです。

Photo by NastyaSensei Sens from Pexels

左側が元画像で、右側がComputer Vision APIでトリミングとリサイズをした画像です。
花とコーヒーカップを含めつつ、上下の空間を削除してサムネイルを作成しています。

 

Computer Vision APIが効果を発揮する作業

以下の作業を自動的に行いたいときに効果を発揮します。

  • 元画像とアスペクト比が違うサイズで大量にリサイズしなければならないとき

元画像と縦横の比率が違うサイズで画像をきれいにリサイズするのは大変です。
画像の枚数が少なければ手動でトリミングしてリサイズすることも可能ですが、大量に画像を
処理しなければならないときは、Computer Visionのサムネイル作成機能を使うことによって
かなりの工数を削減出来るはずです。

  • 元画像の情報を崩さずにサムネイルを自動で作成したいとき

今回使用した画像だと花とコーヒーカップを含めてサムネイルを自動で作成したいときは
物体検出などで物体を検出し、検出した物体の座標を利用して
サムネイルを作成しなければなりません。

すべての機能を作成すると大変ですが、Computer Visionを利用すれば
元画像の重要な情報を維持しつつ、自動でサムネイルの作成ができます。

Computer Vision APIを利用してサムネイルを作成する方法

Computer Visionを利用するにはAzureにアカウントを作成しておく必要があります。

リソースの作成

Azureのポータルにログインし、リソースの作成をクリックします。

検索欄にComputer Visionと入力して検索します。

作成ボタンを押します。

下記の内容でリソースを作成します。入力したら作成ボタンを押します。

名前 thumbnail-test
サブスクリプション 自分の利用しているサブスクリプション
場所 (アジア太平洋)東日本
価格レベル F0
リソースグループ test (新規作成します)

価格レベルによってはお金がかかります。

 

すべてのリソースから先程作成したthumbnail-testをクリックします。

 

リソース管理からキーをクリックしてキー1の値を控えておきます。

サブスクリプションキーを第三者に知られないように注意してください

 

PythonでComputer Vision APIを利用する

こちらにインターネット上に掲載されている画像からサムネイルを作成する
サンプルコードが掲載されています。
ネット上の画像を利用する場合はそのまま利用できます。

cognitive-services-quickstart-code/python-thumb.md at master · Azure-Samples/cognitive-services-quickstart-code
Code Examples used by the Quickstarts in the Cognitive Services Documentation - cognitive-services-quickstart-code/python-thumb.md at master · Azure-Samples/cog...

 

今回はPCに保存されている画像をAPIに送信してみます。

APIの利用にrequests、画像の保存にpillowを利用しているので
pipを利用してインストールしてください。

 

PCの画像をAPIに送信してサムネイルを作成するコードは以下になります。

PC上に保存されているpicture.jpgををAPIに送信します。

Photo by NastyaSensei Sens from Pexels

幅500x高さ600にリサイズしたresized_picture.jpgがPCに保存されます。

参考サイト

アスペクト比の計算でお世話になりました。

アスペクト比計算ツール
画像のサイズからアスペクト比を計算するツール

 

コメント