質問: ### 前提・実現したいこと PythonでOpen CVを使おうとしています。OSはwindows7です。PythonのホームページからPython3.7のインストーラをダウンロードしてインストール。その後、コマンドプロンプトからpip install opencv-pythonでopencvをインストール。その後pythonでpythonのモード入りimport cv2と打つと 、「from .cv2 import*」「importerror dll load failed: 指定されたモジュールが見つかりません。 」 と出て、使えません。teratail等ネット上の類似トラブルを見ながら、Visual Studio をインストールしてみたり、OpenCVのホームページからopencvのインストーラをダウンロード実行して出来た、cv2.pydを\Lib\site-packagesのフォルダにコピーしたりしてみたのですが同じです。 ### 発生している問題・エラーメッセージ >>>import cv2 Traceback (most recent call last): File "", line 1, in File "C:\Python\Python37\Lib\site-packages\cv2\*init*.py", line 3, in from .cv2 import* ImportError: DLL load failed: 指定されたモジュールが見つかりません。 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ### 試したこと Visual Studio をインストール。 Microsoft Visual C++ 2015 Redistributable Update 3をインストール。 OpenCVのホームページからopencv-3.4.0-vc14_vc15.exeをダウンロード実行して出来た、opencv\build\python\2.7\x64の中のcv2.pydを\Lib\site-packagesのフォルダにコピー(teratailの類似例にこれで解決したとあるが、これは2.7用なのでダメな気がする。ダメだった)。 python 3.7をアンインストールし、3.5及び3.6をインストールして試してみた。 pip uninstall opencv-pythonの後、pip install opencv-pythonした。 openCVのホームページからwhlファイルを落としてきて、pip uninstall opencv-pythonの後、pip install opencv_python-3.4.3+contrib-cp37-cp37m-win_amd64.whl でインストール。 どうしても、ImportError: DLL load failed: 指定されたモジュールが見つかりませんとなってしまいます。 是非、よろしくお願いします。分かる人が居るとありがたいです。 追記します anacondaは使用していないです。 pip install opencv-pythonの結果は Name: opencv-python Version: 3.4.3.18 Summary: Wrapper package for OpenCV python bindings. Home-page: https://github.com/skvark/opencv-python Author: None Author-email: None License: MIT Location: c:\python\python37\lib\site-packages Requires: numpy Required-by: です。 opencv-python --ignore-installedでキャッシュを無効にして入れ直してもダメです。
回答: 英語サイトで同様の問題に当たっている人たち事例から解決にたどり着いた。 Dependecy Walkerでcv2.cp36-win_amd64.pydの依存関係を調べると、いくつかのファイルにエラーが見つかる。 そのうち、 API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLLがこの問題の正体。 API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLLをcドライブを検索して探す。(ウェブ上の情報だとDLL集めたあやしげなサイトからダウンロードしてたが) 幸い、ローカルのC:\$WINDOWS.~BT\Sourcesにファイルがあった。 このAPI-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL をWindows\SysWOW64とsystem32にコピーすると問題なく動くようになった。