Azure Functions: FaceAPIとOpenCVで顔検出をしてみた。① -Python3と外部ライブラリの導入-

Azure Functionsでは、Python 2.7.8がデフォルトで利用できるバージョンとなっています。

下記のスクリプトをテスト実行してPythonのバージョンを表示すると、「2.7.8」であることが確認できます。

まずこれを、Python 3.6.4にアップデートします。

※Azure Functionsの作成、及びPython関数の作成に関しては、 Azure Functions:キューメッセージをトリガーとしたPython関数を作成してみる」 を参照ください。

import platform

import platform

print(platform.python_version())

Azure Functionsのポータルを「プラットフォーム機能」→「高度なツール (Kudu)」をクリックし、「Kudu」を開きます。

Kudu画面上部のメニューから「Debub console」→「CMD」をクリックします。

ディレクトリ一覧とコマンドプロンプトが表示されるため、一覧から「site」→「tools」を選択、もしくはコンソールで「cd D:\home\site\tools」を実行して「D:\home\site\tools」のディレクトリに移動します。

下記コマンドで「D:\home\site\tools」のディレクトリにPython 3.6.4をインストールします。

nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:\home\site\tools python364x64

インストールしたPython 3.6.4をAzure Functionsで実行できるようするには、python.exeを「D:\home\site\tools」直下まで移動する必要があります。

下記コマンドで、python.exeの格納されているディレクトリ以下をすべて、「D:\home\site\tools」の直下に移動させます。

mv /d/home/site/tools/python364x64.3.6.4.2/content/python364x64/* /d/home/site/tools/

以上を実行したら、Azure FunctionsのPython関数に戻り、最初のPythonスクリプトでPythonのバージョンを確認します。

関数の実行ログに「3.6.4」と表示され、バージョンが変更されていることが確認できました。

ライブラリのインストール

上記の手順でPythonをインストールすると、pipを使ってライブラリを管理できるようになります。

Pythonにライブラリを追加する場合には、「Kudu」のCMDコンソールで下記のコマンドを実行します。

D:\home\site\tools\python.exe -m pip install {ライブラリ名}

OpenCVをインストールする場合は、ライブラリ名を「opencv_python」として実行します。

D:\home\site\tools\python.exe -m pip install opencv_python

下記コマンドでインストールされているライブラリの一覧を表示すると「opencv-python」がインストールされていることが確認できます。

D:\home\site\tools\python.exe -m pip list

また、Python関数でOpenCVをインポートしてみると、インポートエラーは発生せず、ライブラリが読み込まれていることが確認できました。import cv2print(dir(cv2))

また、Python関数でOpenCVをインポートしてみると、インポートエラーは発生せず、ライブラリが読み込まれていることが確認できました。

import cv2

print(dir(cv2))

まとめ

Azure Functionsでは、デプロイパッケージを使わず、Kudoで直接ライブラリを追加できるため、追加でライブラリが必要になった場合でもいちいちデプロイパッケージを作り直す必要がなく便利です。

次回は、Azure FunctionsからCognitive ServicesのFace APIを使い、画像の顔検出を試してみます。

この記事を書いた人

azure-recipe-user