2017-03-06 23 views
1

私の最大の目的は、私が望むことを達成するためのステップバイステップチュートリアルを見つけられませんでした。virtualenvのOpenCVの2つのバージョン、python

私のプロジェクトには、opencv2.4のpython2とopencv3.1のpython3という2つの設定があります。そのために私はopencvをクローンし、hereからのチュートリアルの後にvirtualenvを作成します(ラズベリーPIとCUDAではなく、設定中にもう一つのフラグがあります)。

Q1:別のvirtualenvをpython3用に作成すると、opencvのインストールを効率的に管理するにはどうすればよいですか?私は何とか様々なビルドフォルダにリンクできますか?

同じビルドフォルダを削除して、opencvブランチをそれぞれのバージョンでチェックアウトし、virtualenvを切り替えるときにゼロから毎回ビルドすることは、最適ではない解決策です。

(仮定、OpenCVのを/home/libraries/opencv/にクローニングされる)

Q2:チュートリアルは、OpenCVのとPythonのための様々な依存関係のセクション1のインストールに記載されています。それはvirtualenvを作成する前です。 python-devとpython-dev3を同時にインストールすることはできますか?それともvirtualenv内のものを上書きする必要がありますか?


Q3: 私は適切にvirtualenvのそれぞれの内のそれぞれのpythonのバージョンとの両方のOpenCVのバージョンをインストールして、シンボリックリンクすることができました。しかし、私は完全にcmakeの出力を理解していない:

cmakeを実行すると(デフォルトではpython2.7を使用していますvirtualenvの中で、OpenCVのマスターでgit checkout 2.4.13とopencv_contrib opencv2.4のため何も存在しないため)、それはようpython2.7を取ります通訳。しかし、virtualenvを使用しないように思われるパスをパッケージ化、なぜその、なぜpython3.4(git checkout 3.1.0)とvirtualenvを使用しようとしますが、それはまだ?:

-- Python: 
--  Interpreter:     /home/josh/.virtualenvs/tfpy2/bin/python2 (ver 2.7.6) 
--  Libraries:     /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6) 
--  numpy:      /home/josh/.virtualenvs/tfpy2/local/lib/python2.7/site-packages/numpy/core/include (ver 1.12.0) 
--  packages path:    lib/python2.7/site-packages 

の作品があり、cmakeのは今2つのPythonのバージョンを認識しているようだ、しかし、そうです間違った2.7を選択する(しかし、私はどうにかして目的の3.4でうまく構築された)。なぜそれがvirtualenvのとpython2.7内python3.4をしません見つけ、プラスなぜビルドの間違ったのpythonを選ぶ?:

-- Python 2: 
--  Interpreter:     /usr/bin/python2.7 (ver 2.7.6) 
--  Libraries:     /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6) 
--  numpy:      /usr/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.3) 
--  packages path:    lib/python2.7/dist-packages 
-- 
-- Python 3: 
--  Interpreter:     /home/josh/.virtualenvs/tfpy3/bin/python3.4 (ver 3.4.3) 
--  Libraries:     /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3) 
--  numpy:      /home/josh/.virtualenvs/tfpy3/lib/python3.4/site-packages/numpy/core/include (ver 1.12.0) 
--  packages path:    lib/python3.4/site-packages 
-- 
-- Python (for build):   /usr/bin/python2.7 

(私はhereは、いくつかの解決策であることを承知していますが、メインの考えではありませんそのような問題を自動的に回避するにはvirtualenv?hereと同様の問題だと思われますが、間違ったバージョンのPythonがコンパイルで認識された/使用されていれば、単純にビルドされたライブラリをシンボリックリンクすることはできません)

答えて

1

A1:次のようにOpenCVソースを再利用することができます。まず、OpenCV 2.4をビルドします。これはあなたが参照したのと似た方法ですが、opencvとopencv_contribの両方で3.1.0の代わりにgit checkout 2.4.13を実行します。

バージョン2.4をビルドしてインストールしたら、ビルドフォルダを削除して、git checkout 3.1.0を実行してビルドを構成して、Python 3を使用します。ビルドしてもう一度インストールします。この時点で、2つのOpenCVバージョンを構築してお使いのコンピュータにインストールする必要があります。

A2:virtualenvはすべて、ライブラリに関するPythonモジュールまたはPythonバインディングに関するものです。チュートリアルではvirtualenvをどのように使っているのですか?virtualenvにnumpyをインストールし、この環境用のpythonバージョンをサポートするために構築されたcv2.soへのリンクを作成します。

+0

ありがとうございます!私はあなたの解決策を読むことができて嬉しいです!一方、私はポストを清潔に保つために主な質問を更新した問題に遭遇しました。あなたは一見をして答えを更新していただけますか? – beginh

+0

また、私はボンネットの下で何が実行されていることを知っていることを安心させてください。 OpenCVでは、基本的にすべての依存関係がcv2.soライブラリを構築するために必要です。それぞれのvirtualenvに応じてpython2.7とpython3.4のサイトパッケージに.soファイルをコピーしてインストールします。だから私は自由にリポジトリを削除することができます、はい? numpyがvirtualenvにインストールされたのはなぜですか?もしnumpyやOpenCVがvirtualenvからインストールされていたら、それは上書きされますか? – beginh

0

AnacondaをPython開発用に使用することをお勧めします。そのMinicondaは、Raspberry PiのようなIoTデバイス向けです。

Anacondaは、conda-envパッケージと設定によって仮想環境をサポートしています。 conda-envでは、Pythonの複数のコピーとバージョンを実行できます。 OpenCVをconda installからインストールすると、登録したパッケージのAnaconda cloudパッケージリポジトリからPythonパッケージがダウンロードされます。これにより、ダウンロード、パッケージ依存、インストールなどの面倒な作業が大幅に削減されます。 Anaconda Cloudで利用できないパッケージについては、pip installのpythonパッケージをAnacondaにインストールすることができます。学習曲線はありますが、拾いにくいわけではありません。

このヘルプが必要です。

免責事項:私はアナコンダではなく、ただのユーザーです。

+0

ありがとう!しかし、この記事では、迅速な解決策を模索するのではなく、ボンネットの下で何が起こっているのかを理解することです。 – beginh

関連する問題