質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

55153閲覧

Pythonでcv2をimportできない

jty4k

総合スコア19

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2グッド

2クリップ

投稿2018/04/06 03:38

前提・実現したいこと

Python上でOpenCVを使用したプログラムを作成しようとしていますが、cv2のimportができずに困っています。

使用している環境は次の通りです。
OS:Windows7 64bit
Python:2.7.14(Anacondaを使ってインストール)
OpenCV:3.2.0(Anacondaインストール後にCMakeで自前ビルド)
Spyder:3.2.6
その他:Visual Studio Professional 2015インストール済み

発生している問題・エラーメッセージ

runfile('C:/Users/USER/.spyder/temp.py', wdir='C:/Users/USER/.spyder') Traceback (most recent call last): File "<ipython-input-9-286fcfa931c2>", line 1, in <module> runfile('C:/Users/USER/.spyder/temp.py', wdir='C:/Users/USER/.spyder') File "C:\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace) File "C:\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 87, in execfile exec(compile(scripttext, filename, 'exec'), glob, loc) File "C:/Users/USER/.spyder/temp.py", line 8, in <module> import cv2 ImportError: DLL load failed: 指定されたプロシージャが見つかりません。

気になっているのは、この手の質問でよく見かける「指定された"モジュール"がみつかりません」ではなく、「指定された"プロシージャ"がみつかりません」となっている点です。

該当のソースコード

python

1import cv2 2print cv2.__version__

最小構成コードのつもりで書いています。
Spyderのエディタ画面で上記コードを記載後、ファイルを実行していますが、前述のエラーが吐き出されます。

試したこと

  • Python(Anaconda)パッケージ、OpenCVのインストール状態の確認

Install OpenCV-Python in Windows
https://docs.opencv.org/3.2.0/d5/de5/tutorial_py_setup_in_windows.html
上記ページを参考にして、コマンドプロンプトにて下記コマンド実行により必要なパッケージ(NumpyとMatplotlib)を確認しました。

# packages in environment at C:\Anaconda2: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py27h9111531_0 alabaster 0.7.10 py27h2cab13d_0 anaconda 5.1.0 py27_2 anaconda-client 1.6.9 py27_0 anaconda-navigator 1.7.0 py27_0 anaconda-project 0.8.2 py27he89e3ca_0 (中略) markupsafe 1.0 py27h9d4480d_1 matplotlib 2.1.2 py27ha51faf0_0 mccabe 0.6.1 py27hde0bf6e_1 menuinst 1.4.11 py27h0c8e037_0 mistune 0.8.3 py27_0 mkl 2018.0.1 h2108138_4 mkl-service 1.1.2 py27h3c6b6b0_4 mpmath 1.0.0 py27h0d59bc2_2 msgpack-python 0.5.1 py27hdc96acc_0 multipledispatch 0.4.9 py27h8ebb51e_0 navigator-updater 0.1.0 py27h5e42984_0 nbconvert 5.3.1 py27h7a573cf_0 nbformat 4.4.0 py27hf49b375_0 networkx 2.1 py27_0 nltk 3.2.5 py27h88af825_0 nose 1.3.7 py27h84c72c6_2 notebook 5.4.0 py27_0 numba 0.36.2 np114py27h719e94c_0 numexpr 2.6.4 py27h20dc147_0 numpy 1.14.0 py27hfef472a_1 numpydoc 0.7.0 py27hf7b062b_0 odo 0.5.1 py27h64810b2_0 olefile 0.45.1 py27_0 openpyxl 2.4.10 py27_0 openssl 1.0.2n hc64555f_0 packaging 16.8 py27hae1a450_1 pandas 0.22.0 py27hc56fc5f_0 pandoc 1.19.2.1 hb2460c7_1 pandocfilters 1.4.2 py27h76461d3_1 parso 0.1.1 py27hd69ea77_0 partd 0.3.8 py27h1e0692f_0 path.py 10.5 py27he482d56_0 pathlib2 2.3.0 py27h0ae272f_0 patsy 0.5.0 py27_0 pep8 1.7.1 py27_0 pickleshare 0.7.4 py27hb5f6335_0 pillow 5.0.0 py27h901f87c_0 pip 9.0.1 py27hdaa76b4_4 pkginfo 1.4.1 py27h6ce81e3_1 pluggy 0.6.0 py27h89dc50b_0 ply 3.10 py27h5fb8a85_0 prompt_toolkit 1.0.15 py27h3a8ec6a_0 psutil 5.4.3 py27h0c8e037_0 py 1.5.2 py27ha24bda0_0 pycodestyle 2.3.1 py27h24cd5d9_0 pycosat 0.6.3 py27hcd410c5_0 pycparser 2.18 py27hb43d16c_1 pycrypto 2.6.1 py27h0c8e037_7 pycurl 7.43.0.1 py27hc64555f_0 pyflakes 1.6.0 py27h34e7826_0 pygments 2.2.0 py27ha50f84f_0 pylint 1.8.2 py27_0 pyodbc 4.0.22 py27hc56fc5f_0 pyopenssl 17.5.0 py27h59156d7_0 pyparsing 2.2.0 py27hc7d9fa6_1 pyqt 5.6.0 py27h224ed30_5 pysocks 1.6.7 py27h59bdd1e_1 pytables 3.4.2 py27h583b7c0_2 pytest 3.3.2 py27_0 python 2.7.14 h8c3f1cb_23 python-dateutil 2.6.1 py27hbdcc174_1 pytz 2017.3 py27hca431c1_0 pywavelets 0.5.2 py27h0dc3f48_0 pywin32 222 py27h0c8e037_0 pywinpty 0.5 py27hc56fc5f_1 pyyaml 3.12 py27ha287073_1 pyzmq 16.0.3 py27he883654_0 (中略) xlrd 1.1.0 py27h2b87a7f_1 xlsxwriter 1.0.2 py27h5ed79b1_0 xlwings 0.11.5 py27_0 xlwt 1.3.0 py27h2271735_0 yaml 0.1.7 h3e6d941_2 zict 0.1.3 py27h0171463_0 zlib 1.2.11 hbc2faf4_2

また、同ページによると あとはcv2.pydをsite-packageフォルダへコピーすればOK、とのことなので確認すると、既にありました。
(タイムスタンプを見る限り、OpenCVビルド時に自動で置かれたものと思っています。)

ここで気にしているのは、インストール方法を検索するとよく見かける下記のコマンドによるパッケージのインストールをしていない点です。

pip install opencv-python

コマンドを実行していないのは、Spyderの初回起動時に「pipをつかったインストールはせずにcondaが更新されるのを待ってからcondadeインストールしてくれ」という旨のTipsがポップアップしたのを見たためです。
(じっくり読まずに進んでしまったので、間違った認識をしているかもしれません。)

  • cv2.pydの依存関係の確認

「指定されたプロシージャが見つかりません。」の解決方法の特定に「Dependency Walker」が有用との情報を見つけたので、本ツールでcv2.pydを読み込みました。
Dependency Walker読み込み結果
見つけられない下記の依存DLLがあるとのことで、それぞれ確認するとDCOMP.DLL以外は見つかりました。(.libならある・・・)
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL
ためしにDLLがあるパスを環境変数に追加してみましたが、結果は変わらず。。。(DCOMP.DLLが原因・・・?)
また、これらDLLはVisual C++ 再頒布可能パッケージに含まれているらしく、確認しましたが既にインストールされていました。
(Visual Studioインストール済みなので当然・・・? 2005, 2008, 2010, 2012, 2013, 2015がありました。)
Win 7, 64 bit, dll problems

https://stackoverflow.com/questions/17023419/win-7-64-bit-dll-problems
また、上記ページを見ても結局のところ解決方法がピンと来ず・・・。

以上、誤った認識があるのかもしれませんが、なかなかスタート地点に立てず困っております。。。
アドバイスいただけますと幸いです。
また、不足している情報等がありましたらご指摘ください。追記いたします。

KojiDoi, tachikoma👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

いろいろといじっていたら、解決しました。
しかも、思ったよりも簡単な話でした。

解決方法

Install OpenCV-Python in Windows
https://docs.opencv.org/3.2.0/d5/de5/tutorial_py_setup_in_windows.html
上記ページに記載されていた、「cv2.pydをsite-packageフォルダへコピーすればOK」というのは、「自前ビルドしたOpenCVのフォルダからコピー」ではなく、「公式パッケージ版を新たにDLしてその中からコピー」するとうまく通りました。(Win版であれば、"opencv\build\python\2.7\x64\cv2.pyd")
わかってしまえばなんということはありませんでした、お騒がせしました。

その後直面した問題 と 解決方法

上記の点を解決した後に 元々動かしたかったスクリプト(他の人が書いたもの)を実行しても、別のエラーにより動きませんでした。
エラー内容は次の通りです。

Traceback (most recent call last): (中略) File "C:\Anaconda2\lib\site-packages\matplotlib\pyplot.py", line 72, in <module> from matplotlib.backends import pylab_setup File "C:\Anaconda2\lib\site-packages\matplotlib\backends\__init__.py", line 14, in <module> line for line in traceback.format_stack() File "C:\Anaconda2\lib\site-packages\matplotlib\backends\__init__.py", line 16, in <genexpr> if not line.startswith(' File "<frozen importlib._bootstrap')) UnicodeDecodeError: 'ascii' codec can't decode byte 0x81 in position 37: ordinal not in range(128) Press any key to continue . . .

こちらも単純な話で、ソースコードが置いてあるパスに日本語が含まれているのが原因でした。


そんなわけで、無事スクリプトを動作させることがようやくできました。
実は他にも発生していたエラーがあるのですが、それについては個人的な別の目的のために余計なところをいじったために出てきたものなので、今回は割愛します。
以上、お騒がせしてすみませんでした。
どこかの誰かの参考になることを祈ります。

投稿2018/04/10 01:20

jty4k

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問