Opencv3.3(Linux)pythonにインストールされたピットのコンパイル

6029 ワード

コンパイルインストールOpenCVは绝対に人を狂わせることで、CMakeの多くのオプション、国内の卵の痛みのネットの速さ、本当に人にツッコミを入れる力がなくて、しかしcontribバッグを使うため、私は再び彼をコンパイルしなければなりません.
OpenCVのコンパイル
実はOpenCVのコンパイルは難しくありませんが、国内の卵の痛みのネット速度は本当に我慢できません.まずOpenCVをコンパイルした過程を簡単に説明します.
私のコンパイル環境はdeepin 15です
準備作業
まずaptで必要なライブラリをインストールします(ほとんどorzをインストールしましたが)
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

以下はオプションパッケージです
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

公式ドキュメントでは、関連するパラメータと必要な言語環境を多く見て、自分の具体的なニーズに応じて自分の必要なパッケージをインストールすることをお勧めします.
自分の作業ディレクトリを作成し、cdはcloneという2つのライブラリに入ります.
cd ~/
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

ここで注意しなければならないのはopencvとcontribが正しいかどうかでコンパイルに失敗するので、ここでcloneは最新の
Opencvの2つのライブラリはいずれもかなり大きいがgithubの速度はかなり遅く、codingを使用する方法がある.NetまたはOschinaをインポートしてcloneし、
私はここでCDNを変更することでアクセスが不安定な問題を解決します.
CMAKEを使用してソースコードからプロジェクトを構築
1.私たちがコンパイルしたopencvライブラリを格納するために一時ディレクトリを作成します.勝手に名前を付けることができます.私はこのディレクトリを表すために使用します.
cd ~/opencv
mkdir build
cd build

2.構築プロジェクト
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

ここでは、最も基本的な2つのパラメータ、コンパイルタイプ、インストールディレクトリを列挙します.
ここではcmake-guiを使用して構築することをお勧めします.彼はオプションのパラメータを明確にリストし、自分のニーズに応じて選択すればいいです.
cmake-guiのインストール
sudo apt-get install cmake-qt-gui
cmake-gui

ここではcmake-guiの使用についてはあまり説明しませんが、私が使用しているパラメータをリストします.
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES=../../opencv_contrib/modules \
-D WITH_LIBV4L=ON \
-D WITH_CUDA=OFF \
..

少し説明しますが、以前pytorchなどの深度ラーニングライブラリを使用していたときにCUDAをインストールしたことがありますが、cmakeの自動構成に問題があったのでCUDAを閉じてデフォルトのOPENCLを使用しました
LIBV 4 Lは構築時にvideoioが見つからないためである.hこのライブラリですので、次のコマンドで解決できます.
sudo apt-get install libv4l-dev

まだ解決できない場合はWITH_V4L=OFFというパラメータを加えることができます
3.python関連パラメータ
pythonライブラリのインストールパスを指定するには、ここでパラメータを指定します.
PYTHON2(3)_EXECUTABLE = #python    
PYTHON_INCLUDE_DIR = /usr/include/python#python     
PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python
PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython.so #python         
PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python/dist-packages/numpy/core/include/ #NUMPY    

一人一人の前の環境が違うので、環境を補うかもしれません.
sudo apt-get install python-numpy
sudo apt-get install python3-numpy
sudo apt-get install libpython-dev libpython3-dev

4.そして楽しい配置を待つことができます...頭!!!
国内の环境は本当にとても彼の卵が痛いです!!!!!!ちょうど大会の時、私の梯子は会議の前日に突然すべて赤くなって、更に卵を痛めさせます
IPPICVは私の卵をかわいがるライブラリで、直接ダウンロードして入れるしかありません.ああ、私のCMAKE配置はダウンロードしたライブラリをコンパイルディレクトリに置きます.Cacheフォルダの中に、下に降りてファイル名をhash入れておけばいいのですが、このライブラリでダウンロードしたURLはhttps://raw.githubusercontent.com/opencv/opencv_3rdparty/a62e20676a60ee0ad6581e217fe7e4bada3b95db/ippicv/ippicv_2017u2_lnx_intel64_20170418.tgz
実践関係は、自分の実際の状況を変更する必要があります.この在庫の目次はこちらですhttps://github.com/opencv/opencv_3rdpartyデフォルトのプライマリブランチはreadmeのみで、opencvに対応するブランチのダウンロードにブランチを変更する必要があります.
この文章を参考にした
ipp_file=ippicv_2017u2_lnx_intel64_20170418.tgz &&
ipp_hash=$(md5sum ../$ipp_file | cut -d" " -f1) &&
ipp_dir=.cache/ippicv                           &&

mkdir -p $ipp_dir &&
cp ../$ipp_file $ipp_dir/$ipp_hash-$ipp_file

Opencvディレクトリで上記のコマンドを行えばよい
ffmpegがダウンロードできない場合があるかもしれませんが、apt大法が一般的です
sudo apt-get install ffmpeg-dev

基本的に解決できる
コンパイルとインストール
コンパイル
私はここで何の問題もありません.
make -j4

インストール
sudo make install

anacondaインストールcv 2
anacondaがcv 2をインストールするときに不思議なエラーが発生し、コマンドラインの呼び出しが完璧で、jupyterを使用するときに問題が発生しました.
インストール
実はデフォルトでmake installはcv 2をpythonディレクトリにインストールしましたが、私がインストールするのはanacondaのpythonです.ちょうどanacondaの環境変数です.私はシステムのpython環境変数の下に置いています.普段はsource activate rootを使っていますが、自然make installはインストールしていません.
ここではmakeのステップで生成されたopencvのダイナミックリンクファイルをコピーできます.
図のようにanacondaのデフォルトpythonのライブラリディレクトリにコピーします.
cp cv2.cpython-35m-x86_64-linux-gnu.so ~/anaconda3/lib/python3.6/site-packages/cv.so

その後、デフォルトのpythonを使用してcvを呼び出すのは全く問題ありませんが、不思議なことにjupyter notebookで奇妙な問題が発生しました.
jupyter notebook import Error
jupyterがcv 2を呼び出したときにimport errorというエラーが発生しました.
Import error GLIBCXX_3.4.21 not found when importing cv2

多分上のようなもので、当時の新聞のスクリーンショットは保存されていません
GLIBCXXの問題はlibgccリンクがgccバージョンの更新後にリンクが更新されていない可能性があることです.一般的にanacondaは万能文法を使用しています.
conda install libgcc

しかし今回は解決しなかったので、
次の文を使用してcondaのデフォルトのlibgccのリンクをチェックします.
ldd anaconda3/lib/libstdgcc.so.6

または
strings anaconda3/lib/libstdgcc.so.6 | grep GLIBCXX

対応GLIBCXXがない場合はソフトリンクでリンク
cd anaconda3/lib/
mv libstdc++.so.6 libstdc++.so.6.old
ln -s /usr/lib64/libstdc++.so.6  libstdc++.so.6

自信満々にjupyterを開いてimport cv 2を使うと
現実は私にひどい耳光を与えて、import error、これはとても気まずいです.いったいどうやって解決しますか?
核の変更
pythonのコマンドラインで実行できますが、jupyterは実行できません.jupyterコアの設定に問題がある可能性がありますか?
異なる環境下でkenelsが存在するディレクトリは異なる可能性があり、以下は公式に提供される可能性のある位置である.
私のkernelディレクトリはanaconda3/share/jupyter/kernels/で、anaconda 3/share/jupyter/kernels/python 3ディレクトリの下のkenelを開きます.json編集
変更前
変更後
jupyter notebookを開いてimport cv 2を実行
すべて正常です.Opencvのコンパイルインストールがやっと終わりました
後記
なぜ環境変数のpythonを絶対パスに変更したのか分からないがok(anacondaのpythonが環境変数の順序がシステムの後ろにあるせいかもしれない)、彼にかかわらず、私の特コードはopencvを配置したくない.
GFW真(調和調和)
転載先:https://www.cnblogs.com/lynsyklate/p/7719500.html