これからの時代を生き抜くため、かねてから必要性を感じていた画像認識に手を出しました。
Pythonも書いたことがないのに、OpenCVで画像認識を体験したくなった初心者の、環境構築 備忘録です。
同じようにハマった初心者の助けになれば・・・
■環境・バージョン
Windows10
Anaconda 4.4.0
Python 3.6.1
OpenCV 3.3.0
■Anacondaのインストール
「簡単にpython3系列とOpenCV3を導入する」を参考とさせて頂きました。
簡単・・・に惹かれ。
「作業手順」の項目を見ながら、まず「Anaconda」をインストールします。
依存ライブラリの解決は心が折れそうなので、パッケージ化された「Anaconda」を使った方が良さそうです。
■仮想環境の作成
「Anaconda」のインストールが終わったら、仮想環境の作成を行います。
仮想環境ごとにpythonのバージョンを選べるので、(現時点では新しい)3.6を指定し、環境名は「py36」としています。
コマンドプロントで
1 |
conda create -n py36 python=3.6 anaconda |
と、入力して「Enter」。何か聞かれたら「y」で肯定。
仮想環境の作成が完了したら、
1 |
activate py36 |
で、仮想環境が立ち上がります。
コマンドプロントに括弧で環境名が表示されます。
1 |
(py36) C:¥・・・ |
なお、仮想環境から抜けるときは、
1 |
deactivate |
のようです。
※この記事はWindowsの場合です。
■OpenCVのインストールがうまくいけば
あとはOpenCVのインストールのみ。
コマンドプロントで、
1 |
conda install --channel https://conda.anaconda.org/menpo opencv3 |
と、たたけば良いだけのはずですが・・・。
■テスト用Pythonファイルで確認
インストールが成功しているか、テストします。
OpenCVをPythonで読み込んで、OpenCVのバージョンを表示させるだけの、テスト用Pythonファイルを作ります。
私の場合は、顔認識をさせる予定なので「FACE」というフォルダをCドライブ直下に作成し、そこに、「run.py」というファイルを作りました。名前は任意です。
import cv2 # OpenCV読み込み print(cv2.__version__) # OpenCVバージョン表示
OpenCV3を読み込むのに「import cv2」?でも、これは正しいようです。
それではコマンドプロントで、実行してみましょう。
1 |
cd C:\FACE |
で移動して
1 |
python run.py |
で実行。
バージョンが表示されれば無事成功です。
無事成功しない場合
私は無事では済まず、「cv2が見つからないよ」というエラーに悩まされました。
1 2 3 4 |
Traceback (most recent call last): File "run.py", line 1, in <module> import cv2 ModuleNotFoundError: No module named 'cv2' |
パスが通ってないのかな・・・?解決には至らず、別の手段をとります。
pipでOpenCVをインストール
「pip」というパッケージ管理ツールを使ってインストールします。
「Anaconda」で管理していたはずなので、「pip」の併用はまずいような気もしますが、もう進みます。
「OpenCV 3(core + contrib)をWindows & Python 3の環境にインストール・・・」を参考とさせて頂きました。
pipでopencv3.3をインストールしてみましょう。
非公式?のWindows用Python拡張パッケージ集から、「opencv_python-3.3.0+contrib-cp36-cp36m-win_amd64.whl」を選んでダウンロード。
コマンドプロントでダウンロードしたフォルダに移動し、
1 |
pip install opencv_python-3.3.0+contrib-cp36-cp36m-win_amd64.whl |
で、インストール。
さあ、これでまたC:\FACEに戻って、
1 |
python run.py |
テストpythonの再実行。
・・・。
あれ。
エラーが変わった・・・。
numpyをアップグレード
エラーが変わっただけでも、前進した喜びがあります。(本当に前進しているか分かりませんが)
エラーの内容は、
1 2 3 4 5 |
RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa Traceback (most recent call last): File "run.py", line 1, in <module> import cv2 ImportError: numpy.core.multiarray failed to import |
「numpy」という、また新しい言葉が出てきました。数値計算ライブラリのようです。
調査したところ「numpy」のアップグレードで対処できるかもしれません。
コマンドプロントで、
1 |
pip install numpy --upgrade |
と実行。
バージョン1.12.1から1.13.1へアップグレードされました。
インストール成功!
飽きるほどたたきましたが、C:\FACEに戻って、
1 |
python run.py |
実行。
・・・。
1 |
3.3.0 |
と、応答が!
ようやくOpenCVを読み込み、バージョンが表示されました。
ここから顔認識までも、またいろいろハマったのですが、今回はここまで。