2017-03-28 5 views
3

OpenCVウィンドウを最初に表示しているPython 3コードを実行しようとしています。終了すると、MatplotLibを使用して何かをプロットする必要があります。しかし、plt.show()コール時にプログラムがクラッシュする:python3.6が予期せず終了する。私はこの問題を解決する必要がありTkAggにmatplotlibのバックエンドを設定したり、setUseOpenCL(false)を設定した他のStackOverflowの記事でMatplotLib(TKinter)+ Python 3でのOpenCVのクラッシュ

import numpy as np 

import matplotlib 
matplotlib.use("TkAgg")  # <== Doesn't solve the problem 
import matplotlib.pyplot as plt 

import cv2 
#cv2.ocl.setUseOpenCL(False) <== Doesn't solve the problem 

im = np.zeros((100,100,3)) 
cv2.imshow('test', im) 
cv2.waitKey(0) 

plt.plot(np.sin(np.linspace(0,20,200))) 
plt.show()     # <== Crashes on this call 

。しかし、この両方の修正は私のMacBookではうまくいきません。 import orderを変更したり、MatplotLibバックエンドを交換しようとするなど、いくつかのことを試しました。誰でもこの問題を解決する方法を知っていますか?

MacOSのシエラ 10.12.3
のPython 3.6.0
Tkinterのバージョン8.5
OpenCVのバージョン3.2.0
matplotlibのバージョン2.0.0

スタックトレースどのようにクラッシュするの:

のlibC++ abi.dylib:30:タイプNSException

2017年3月28日11のキャッチされない例外で終了45.639 python3.6 [5208:78361] - [NSApplicationのの_setup:]:認識されないセレクターインスタンスに送信されました0x7f997ec98190 2017-03-28 11:30:45.641 python3.6 [5208:78361] *キャッチされていない例外 'NSInvalidArgumentException'の理由によるアプリケーションの終了 - 理由: - [NSApplication _setup:]:インスタンスに送信された認識できないセレクタ0x7f997ec98190 ' *ファーストスローコールスタック: ( 0 CoreFoundation 0x00007fffbeb80e7b exceptionPreprocess + 171 1 libobjc.A.dylib 0x00007fffd3760cad objc_exception_throw + 48 2 CoreFoundationのを0x00007fffbec02cb4 - [NSObjectの(NSObjectの)doesNotRecognizeSelector:] + 132 3 CoreFoundationの0x00007fffbeaf2fb5 ___forwarding_ + 1061 4 CoreFoundationの0x00007fffbeaf2b08 _CF_forwarding_prep_0 + 120 5 Tkの0x00000001032c45e6 TkpInit + 471 6 Tk 0x000000010323fc8d Tk_Init + 1794 7 _tkinter.cpython-36m-darwin.so 0x000000010311cde6 Tcl_AppInit + 82 8 _tkinter.cpython-36m-darwin。そう0x00000001031183a3 _tkinter_create + 1094 9パイソン0x0000000100b28ea2 _PyCFunction_FastCallDict + 172 10パイソン0x0000000100b927a2 CALL_FUNCTION + 584 11パイソン0x0000000100b8fbbb _PyEval_EvalFrameDefault + 23930 12パイソン0x0000000100b92fbf _PyEval_EvalCodeWithName + 1973 13パイソン0x0000000100b938c4 _PyFunction_FastCallDict + 477 14パイソン0x0000000100aeea73 _PyObject_FastCallDict + 231 15パイソン0x0000000100aeeb93 _PyObject_Call_Prepend + 149 16 Python 0x0000000100aee8cb PyObject_Call + 102 17 Python 0x0000000100b3cd24 slot_tp_init + 61 18 Python 0x0000000100b39ac3 type_call + 184 19パイソン0x0000000100aeea34 _PyObject_FastCallDict + 168 20パイソン0x0000000100b9263b CALL_FUNCTION + 225 21パイソン0x0000000100b8fbbb _PyEval_EvalFrameDefault + 23930 22パイソン0x0000000100b93976 _PyFunction_FastCall + 122 23パイソン0x0000000100b92775 CALL_FUNCTION + 539 24パイソン0x0000000100b8fbbb _PyEval_EvalFrameDefault + 23930 25パイソン0x0000000100b92fbf _PyEval_EvalCodeWithName + 1973 26 Python 0x0000000100b89e02 PyEval_EvalCodeEx + 100 27 Python 0x0000000100b101e3 function_call + 363 28 Python 0x0000000100aee8cb PyObject_Call + 102 29 Python 0x00000 00100b8fe16 _PyEval_EvalFrameDefault + 24533 30パイソン0x0000000100b92fbf _PyEval_EvalCodeWithName + 1973 + 241 32パイソン0x0000000100b92775 CALL_FUNCTION + 539 33パイソン0x0000000100b8fbbb _PyEval_EvalFrameDefault + 23930 34パイソン0x0000000100b93976 _PyFunction_FastCall + 122 35パイソン0x0000000100b92775 CALL_FUNCTION + 539 36パイソン0x0000000100b8fbbb 31パイソン0x0000000100b936daのfast_function Python 0x0000000100b92fbf _PyEval_EvalCodeWithName + 1973 38 Python 0x0000000100b936da fast_function + 241 40パイソン0x0000000100b8fbbb _PyEval_EvalFrameDefault + 23930 41パイソン0x0000000100b92fbf _PyEval_EvalCodeWithName + 1973 + 241 43パイソン0x0000000100b92775 CALL_FUNCTION + 539 44パイソン0x0000000100b8fbbb _PyEval_EvalFrameDefault + 23930 45パイソン0x0000000100b92fbf _PyEval_EvalCodeWithName + 1973 46パイソン0x0000000100b89d98 PyEval_EvalCode + 100 42パイソン0x0000000100b936daのfast_function 47 Python 0x0000000100bb33aa run_mod + 58 48 Python 0x0000000100bb36bf PyRun_FileExFlags + 178 49 Python 0x0000000100bb2d58 PyRun_SimpleFileExFlags + 676 50 Python 0x0000000 100bc74d0 Py_Main + 3472 51 python3.6 0x0000000100adfe17 python3.6 + 7703 52 libdyld.dylib 0x00007fffd4044255 start + 1 53 ??? 0x0000000000000002は0x0 + 2 )

+0

Macの問題と思われます。私はそれが期待どおりに動作するウィンドウでこれを再現することはできません。 – ImportanceOfBeingErnest

+0

Macの問題ではありません。コードは "TkAgg"なしで私のMac上で正常に動作し、 'matplotlib.use(" TkAgg ")'と同じエラーを生成します。 –

+0

この問題を解決する方法はありますか?私はOpenCV 3.2.0でMacで同じ問題を抱えています。 –

答えて

0

matplotlibの程度は考えたが、私は、ウィンドウの管理に問題があると考えていることを想像することができます。これを試してみてください:

cv2.imshow('test', im) 
cv2.waitKey(1) 
cv2.destroyWindow('test') 

は、少なくともこれは彼らがもはや使用されていないとき、既に開かれcv2.imshow()のウィンドウを治療する正しい方法です。

+0

verified.humanについてはわかりませんが、私は同じ問題があり、これは私のために修正されません。 –

1

あなたが男の子/女の子に役立つかどうかわかりませんが、matplotlibをkivyアプリケーション(Macでも)に埋め込もうとしていますが、数時間のグーグル、クラスの再作成、アンインストールと再インストール、ある時点では別のライブラリを使ってプロットしようとしています。私は私のために働いたOSX 1

import matplotlib 
matplotlib.use("MacOSX") 
import matplotlib.pyplot as plt 

、Occamsカミソリとすべての素敵を果たしているようして、明示的に宣言していない完全として最も簡単な解決策は、バックエンド(「TkAgg」)オフのビンへのがわかりました私は、行こうと思う!

関連する問題