MacのPythonで「ImportError: No module named ‘cv2’」とエラーが出る時はコマンドconda install -c menpo opencv3=3.1.0で解決しよう【Anaconda環境】

MacのPythonで「ImportError: No module named ‘cv2’」とエラーが出る時の対処法です。
(Anaconda環境、macOS Mojave 10.14.3, Python 3.5.6)
(macOS Catalina、 Python3.5.6でも検証済み)

 

結論からいうと、Anaconda環境でPython3.5環境を設定した状態( 「source activate py35」等 で
ターミナルで
conda install -c menpo opencv3=3.1.0
を実行すれば解決です。


最近、Pythonの書籍「PythonによるAI・機械学習・深層学習アプリ」のつくり方

(上記はAmazonのアソシエイトリンクを使用しています)

という本を買ったのですが、
P.133ページの
顔検出のプログラムがどうしても動きませんでした。

[ImportError: No module named ‘cv2’]
というエラーが出てしまいます。OpenCVが読み込めていないらしい。

Anaconda環境には

conda list コマンドで確認すると

opencv-python             4.1.0.25                 pypi_0    pypi
という感じでOpenCVが入っていたんですよね。

このバージョンがopencv-python 4.1.0.25となっているのにimportの名前が「cv2」になるロジックが分かりません…(超初心者)。略称はどこから調べれば良いのでしょうか。

Pythonはプログラミングは簡単でも難しくもなく普通ですが、動くまでの環境設定をするのがとても大変な印象です。

Anacondaは書籍に書いてあるとおりにインストールしてセッティングしていました。

 

そして見つけたのがこの記事。

python3でcv2をimportする方法

ターミナルで

conda install -c menpo opencv3=3.1.0

を実行しましょう。(Pythonのバージョンは3.5である必要があります。後述。)

 

PythonのOpenCVモジュールがうまく読み込めていなかったようなのですが、このコマンドで新しくインストールしたら読み込めました。

実行結果がこちらです。

画像のモデルはフリー素材サイト「ぱくたそ」でも活躍されているモデルの
河村友歌(ゆかちぃ)さんです。

conda list
をしてみたら、

opencv3                   3.1.0                    py35_0    menpo

というものが新しく入っていたので、こちらを読み込んで動いているようです。

もっと勉強せねば…

ボカロの最新曲ランキングサイト「ソングストーリー」(https://www.songstory.me/)に、深層学習の仕組みを取り込んでいけたらいいなぁと思って色々やっています。
上の書籍に、「自然言語処理を利用した機械学習」の例でスパム投稿を判定するプログラムの実践があったので使えそうだなと思ったんですよね。

(…そうしたらRailsではなくてDjangoで書き直さないといけないんですけどね。)

という訳で、Pythonで「ImportError: No module named ‘cv2’」とエラーが出た時の対処法でした。


ちなみに、Python 3.6、3.7、3.8ではopencv3はインストール出来ないので、もしそれらの環境にしている場合は

conda install python=3.5

でPythonをダウングレードする必要があります。
(opencv3をPython3.8環境でインストールしようとした場合のエラーメッセージ:

Specifications:

  – opencv3 -> python[version=’2.7.*|3.4.*|3.5.*’]

と出る。)

Pythonを3.5にダウングレードした後にopencv3をインストールしましょう。

Pythonのバージョンをダウングレードすると、それに伴うパッケージをAnacondaは検知して自動的にダウングレードして調節してくれます。かなり自由自在です。Anacondaは凄かった。

もしくは、新しい仮想環境をAnacondaで作りましょう。(こっちのほうが正攻法ですね)
Anacondaでは複数のPythonのバージョン(とそのライブラリ環境)を入れることが出来ます。

以下で詳しく説明。

まず、ターミナルで

conda create -n py35 python=3.5

とすることで、Python3.5の環境が作れます。
『py35』の部分は自分でつける名前なので何でもOKです。
色々とダウンロード&インストールされます。

うまくいったらターミナルで

conda info -e

コマンドで、仮想環境(py35)が出来ているかチェックします。
出来ていたら、

source activate py35

で環境をPython3.5の入っている仮想環境に切り替えます。
その状態で、

conda install -c menpo opencv3=3.1.0

をすればOKです。

また、この状態では描画ライブラリのmatplotlibが入っていない状態なので、加えて

conda install matplotlib

で、matplotlibをインストールします。依存関係のあるパッケージも含めてすべてインストールされます。これで完了です。

Anacondaのインストールもかなりハマるとハマります。

以下.zshrcファイルの設定方法です。

.zshrcファイルはHOMEディレクトリ直下に入れておけば大丈夫だと思います。

ローカル作業用ディレクトリ(HOMEディレクトリより下層のディレクトリ)で.zshrcをtouchコマンドで作ると、同じものがHOMEディレクトリ直下に作られました。

作業用ディレクトリで作ったものは削除しておきましたが普通に動いています。

以下、.zshrcファイルの置き場所についての参考リンク。

なにか間違っていましたらTwitter等でリプを頂けると幸いです。m(_ _)m


参考:

 

あと、カスケードファイル(顔認識に使う特徴データのファイル)をフォルダに配置していないとエラーが出ます。
以下参照。

「OpenCVで顔認識をしてみた」
https://qiita.com/K_M95/items/f1a3e7c47800adb94095