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環境を設定した状態( 「conda 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は書籍に書いてあるとおりにインストールしてセッティングしていました。
そして見つけたのがこの記事。
ターミナルで
conda install -c menpo opencv3=3.1.0
を実行しましょう。(Pythonのバージョンは3.5である必要があります。後述。)
>conda install -c menpo opencv3=3.1.0
これが答えだ!(ドォンpython3でcv2をimportする方法 – 人工知能の話題でご飯3杯いける https://t.co/4isOXZXKVM
— りーず Leez(そーめる) (@so_meru) 2019年5月24日
PythonのOpenCVモジュールがうまく読み込めていなかったようなのですが、このコマンドで新しくインストールしたら読み込めました。
実行結果がこちらです。
Pythonで顔の検出に成功した。すごい。 pic.twitter.com/v2HrUXKtmY
— りーず Leez(そーめる) (@so_meru) 2019年5月24日
画像のモデルはフリー素材サイト「ぱくたそ」でも活躍されているモデルの
河村友歌(ゆかちぃ)さんです。
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
とすることで、「py35」という名前のPython3.5の環境が作れます。
『py35』の部分は自分でつける名前なので何でもOKです。
色々とダウンロード&インストールされます。
うまくいったらターミナルで
conda info -e
コマンドで、仮想環境(py35)が出来ているかチェックします。
出来ていたら、
conda activate py35
で環境をPython3.5の入っている仮想環境に切り替えます。
その状態で、
conda install -c menpo opencv3=3.1.0
をすればOKです。
また、この状態では描画ライブラリのmatplotlibが入っていない状態なので、加えて
conda install matplotlib
で、matplotlibをインストールします。依存関係のあるパッケージも含めてすべてインストールされます。これで完了です。
AnacondaはGUI版の最新のものをHOMEにインストールすればOKなのね。
インストール後にターミナルでAnacondaが動くように.zshrcファイルを設定する、と。
— りーず Leez(そーめる) (@so_meru) February 16, 2020
Anacondaのインストールもかなりハマるとハマります。
以下.zshrcファイルの設定方法です。
これをやったらHOMEディレクトリ下に.zshrcファイルが作成されていたので、作業ディレクトリで作った.zshrcファイルは削除しておいた。
同じものが2つ作成されるのかな?macOS CatelinaにAnacondaをインストールする(zshでの不具合対応) https://t.co/yq8eNmuYo2
— りーず Leez(そーめる) (@so_meru) February 16, 2020
.zshrcファイルはHOMEディレクトリ直下に入れておけば大丈夫だと思います。
ローカル作業用ディレクトリ(HOMEディレクトリより下層のディレクトリ)で.zshrcをtouchコマンドで作ると、同じものがHOMEディレクトリ直下に作られました。
作業用ディレクトリで作ったものは削除しておきましたが普通に動いています。
以下、.zshrcファイルの置き場所についての参考リンク。
とりあえずホームディレクトリにあればよいっぽい(?)
個人設定用のファイルは出来たという感じなのかな。.zshenvと.zshrcの場所・違い・設定方法を解説します! https://t.co/Syc2F4nMnw
— りーず Leez(そーめる) (@so_meru) February 16, 2020
なにか間違っていましたらTwitter等でリプを頂けると幸いです。m(_ _)m
参考:
あと、カスケードファイル(顔認識に使う特徴データのファイル)をフォルダに配置していないとエラーが出ます。
以下参照。
「OpenCVで顔認識をしてみた」
https://qiita.com/K_M95/items/f1a3e7c47800adb94095