2017-03-29 37 views
8

私はUbuntu 14.04を使用しています。私はAdrian Rosebrockのガイドを使ってOpenCVをインストールしました。 PythonとopencvのプログラミングにPyCharmも使用しています。OpenCVとPythonでコード補完が機能しない

私の問題は、私はcv2モジュールのコード補完を使うことができますが、コード補完はcv2から開始されたインスタンスでは機能しません。例を以下に示します。

This one works.

But this one wouldn't.

予想通り、私は私のプログラムを書く一切実行時エラーはありません。そのようなcap.isOpened()はエラーなしで動作します。

+0

に[ガイド](http://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7をご覧ください-on-ubuntu /)が挙げられます。 –

答えて

4

openCVのpythonモジュールは、基になるC++ライブラリのdynamically generated wrapperです。 PyCharmは、オートコンプリート機能を提供するためのpythonソースコードの可用性に依存しています。ソースコードが見つからない場合(opencvの場合)、pycharmは関数プロトタイプを持つスケルトンファイルを生成し、オートコンプリート用のものに依存しますが、能力は低下します。

あなたは

cv2. 

で自動補完の結果として、それは、モジュールCV2は、以下のメンバーを持っていることを把握し、提案を提供することができます。一方

とき

cap = cv2.VideoCapture(file_name) 

PyCharmあなただけCV2モジュールからメソッドを呼び出したとcapにそれを割り当てられますが、この方法の結果の型についての情報を持っていないことを把握することができますし、

cap. 

ための提案を探しに行くためにどこにシェルモードで同じことをしようとした場合、あなたが実際にあなたの行動を見ることができます知っていませんシェルモードでは、実際にライブオブジェクトをイントロスペクトしますので、


(それはそれは持っているとの提案として、それらを提供するものメンバー作成したキャップオブジェクトを聞いてきます)、見に期待また、OpenCVのためのスタブを書くことができます有効にするために自分自身をモジュール編集モードでオートコンプリートを修正します。

リンクにhere

+0

PyCharmのpythonコンソールでは、自動完成は意図したとおりに動作しているように見えます。しかし、エディターでオートコンプリートを利用しようとすると、これは私の問題を解決しません。エディターでもイントロスペクションを強制する方法はありますか? –

+0

@Justin、私はこれがあなたの質問に答えることに同意しません。両方とも、あなたが見ている振る舞いを説明し、あなたが望む振る舞いになる方法を提供します(opencvモジュール用のスタブを書く)。これはほんのわずかな仕事量なので、私がそれを提供するとは思わないはずです。あなたが編集者に書いたものは、まずPythonインタプリタで評価されなければならないので、難しく危険な編集者のイントロスペクションについては、 –

関連する問題