ubuntu20.04 での複数バージョンの opencv の共存と切り替え

以前に ubuntu20.04 システムに opencv4.5.5 と拡張ライブラリ opencv_contrib4.5.5 をインストールしましたが、最近 PL-SLAM のソース コードを実行する必要があり、PL-SLAM システムは opencv3.xx に基づいて開発されています。 Opencv バージョンの非互換性の問題を直接実行すると、多くの問題が発生します。そこで、opencv3.4.5と拡張ライブラリopencv_contrib3.4.5を再度インストールしたいのですが、その過程で色々問題があったので、記録としてこの記事を書きます。

1. 依存関係をダウンロードしてインストールする

1. まず apt-get を更新します。インストール前にシステムを更新することが最善です。そうしないと、インストールが失敗する可能性があります。ターミナルを入力します:

sudo apt-get update
sudo apt-get upgrade

2. 次に、公式の opencv 依存関係パッケージをインストールし、ターミナルに次のように入力します。

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

2. opencv3.4.5 および opencv_contrib3.4.5 ソース圧縮パッケージをダウンロードします。

1.opencv3.4.5のダウンロードアドレス:
https://github.com/opencv/opencv/releases

2.opencv_contrib3.4.5のダウンロードアドレス:
https://github.com/opencv/opencv_contrib/tree/3.4.5

3.opencvの設定

1. 以下の図に示すように、OpenCV3.4.5 と OpenCV_contrib3.4.5 を解凍 (解凍) し、フォルダーに配置します。 2.
ここに画像の説明を挿入ダブルクリックして解凍された opencv-3.4.5 フォルダーに入り、右クリックしてターミナルを開きます。 (またはターミナルの他の場所で開き、「cd opencv-3.4.5」と入力して現在のディレクトリに入ります)、次の順に入力します(3 行目の最後のスペースと 2 つのドットを忘れないでください)。

mkdir build
cd build 
cmake-gui .. 

3. 次に、CMake のグラフィカル インターフェイスが表示されます。上記の 2 つのパスで、コードが配置されているフォルダーのパスとインストールするパスを選択します。 4. 左下の [構成] ボタンをクリックし、[Unix Makefiles] を選択します
ここに画像の説明を挿入

ここに画像の説明を挿入
5. 一部のファイルをダウンロードする必要があり、しばらく時間がかかりますネットワーク上の理由によりダウンロードが失敗し、boostdesc_bgm.i などのファイルが欠落する可能性があるため、欠落しているファイルを手動でダウンロードしてから、次のファイルをコピーします。

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

図に示すように、それを opencv_contrib/modules/xfeatures2d/src/ ディレクトリにコピーします。
ここに画像の説明を挿入Baidu クラウド リンク: https://pan.baidu.com/s/1BeYF8kqEZLAJYQj-MvxpmA
抽出コード: e1wc
6. 設定ボタンをクリックします。再び左下をクリックすると、CMake がデフォルト構成をロードします。ここでは、より直観的で便利なグラフィカル インターフェイスを介して構成されています。
変更する必要がある箇所は 3 つあります。
(1) CMAKE_BUILD_TYPE 値に RELEASE を入力し、その他は変更しないでください (すでに存在する場合は変更する必要はありません)。
(2) 以下の CMAKE_INSTALL_PREFIX は、デフォルトのインストール ディレクトリを示しています。デフォルトでは usr/local ディレクトリにインストールされ、makefile の生成時にこのディレクトリにインストールされ、最終的に make install の実行時に実行されます。ただし、以前に opencv4.5.5 がインストールされているため、デフォルトのパスを変更しないと以前の opencv4.5.5 が上書きされてしまうため、~/opencv3.4.5/opencv-3.4.5/build フォルダーの下に新規インストールフォルダーを作成します。 、opencv3.4.5をこのパスにインストールします。
ここに画像の説明を挿入CMAKE_INSTALL_PREFIX のデフォルトのインストール ディレクトリを ~/opencv3.4.5/opencv-3.4.5/build/installed に変更します。
ここに画像の説明を挿入
(3) OPENCV_EXTRA_MODULES_PATH で、opencv_contrib3.4.5 拡張ライブラリの入力ディレクトリを選択します (この行の後ろの空白をクリックして選択します) it) 次に、opencv_contrib-3.2.0 フォルダー内の modules フォルダーを選択します。opencv_contrib-3.2.0 フォルダーを選択するだけでは十分ではなく、その中の modules フォルダーを選択する必要があることに注意してください。次の図に示すように、[選択] をクリックします。
注: OPENCV_EXTRA_MODULES_PATH は、OpenCV_contrib モジュールなど、コンパイルする拡張モジュールを指定するために使用されます。
ここに画像の説明を挿入ここに画像の説明を挿入
7. 「生成」をクリックして構成ファイルを生成します。このステップは比較的早く完了します。
8. 次に、ビルド ディレクトリでターミナルを開き、次のように入力します。

make -j4

このとき、次のエラーが報告されます。

理由は、ceres のバージョンが高すぎて opencv3.4.5 と互換性がないためです。元のインストールされているバージョンは ceres2.2.0 であるため、ceres1.14.0 を再インストールし、cmake-gui コマンドを使用して ceres1.14.0 のインストール パスを次のように変更します。元のセレスを上書きしないように、前の手順を実行します。それほど面倒な作業をしたくない場合は、元の ceres をアンインストールして再インストールすることができます。

ceres を再インストールした後、上記の手順に従って opencv を再度構成し、ビルド ディレクトリでターミナルを開いて次のように入力します。

make -j4

コンパイルが成功したら、次のように入力します。

sudo make install

その後、opencv3.4.5 が正常にインストールされるようになります。

参考ブログ:https://blog.csdn.net/jindunwan7388/article/details/80397700

3. 環境変数を構成する

1. インストールが成功したら、opencv の環境変数を設定する必要があります。ファイルを開きます:

sudo gedit /etc/ld.so.conf.d/opencv.conf

2. opencv3.4.5 ライブラリ ファイルのパスを環境変数に追加し、末尾に次の行を追加します。

/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed/lib

3. 次に、ライブラリを構成します。

sudo ldconfig

4. 環境変数を変更します。

sudo gedit /etc/bash.bashrc

5. ファイルの後に次の内容を追加します。

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed/lib

6. ~/.bashrc を更新します

source ~/.bashrc 

7. OpenCVのバージョンを問い合わせる

pkg-config --modversion opencv

出力された場合3.4.5、構成は成功しています。
以前のバージョンを使用したい場合は、~/.bashrc 内の追加内容をコメントアウトするとsource ~/.bashrc使用できます。

4. opencv の複数のバージョン間の切り替え

OpenCV のバージョンが 1 つだけの場合は、CMakeList.txt で次のステートメントを使用します。OpenCV がコンパイルされると、OpenCVConfig.cmake ファイルがそのディレクトリに生成されます。このファイルは、CMake が OpenCV を検索する場所、その .h ファイルの場所などを指定します。この状況は、私の opencv4.4.5 など、通常は /usr/local/lib の下のデフォルト パスにインストールされる opencv の 1 つのバージョンにのみ当てはまります。これは、インストール時にプレフィックス パスを指定しないと、そのバージョンがインストールされてしまうためです。 make install 中に、すべての .so ファイルを /usr/local/lib にインストールし、すべてのヘッダー ファイルを /usr/include にインストールします。

FIND_PACKAGE(OpenCV REQUIRED)

ただし、ここでは opencv3.4.5 のインストール用のパスを指定しているため、opencv3.4.5 を使用する場合は、find_package の前に cmake 検索パスを設定する必要があります。つまり、cmake に opencv"/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed"を検索

set(CMAKE_PREFIX_PATH "/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed")

ここで言及する必要があるのは、find_package は実際に OpenCVConfig.cmake ファイルを探しているということです。このファイルを開くと、現在の opencv に対応するバージョンが表示されます。同時に、マクロのような感じでいくつかのパスが定義されています。 C++ では、特に: OpenCV_LIBS OpenCV_INCLUDE_DIRS 2 つのパス。これにより、cmake は通常、opencv に必要なヘッダー ファイルとライブラリ ファイルを見つけることができます。

したがって、opencv を含む 3 番目の方法として、これら 2 つのパスを直接設定する方法があります。OpenCVConfig.cmake ファイルのパスは次のとおりです。/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed/share/OpenC

set(OpenCV_DIR "/home/xqs/3rdparty/opencv3.4.5/opencv-3.4.5/build/installed/share/OpenCV")
find_package(OpenCV 3.4.5 REQUIRED COMPONENTS core highgui imgproc flann calib3d)  
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

参考ブログ:https://blog.csdn.net/qq_25458977/article/details/103931360

5、ceresをアンインストールする

Ceres のライブラリ ファイルは「/usr/local/lib」に 1 つだけあり、ヘッダー ファイルはすべて「/usr/local/include/ceres」にあります。

sudo rm -r /usr/local/lib/cmake/Ceres
sudo rm -r /usr/local/include/ceres /usr/local/lib/libceres.a

6.Ceresのインストール

1. 依存ライブラリをインストールします。

sudo apt-get install liblapack-dev libsuitesparse-dev libgflags-dev 
sudo apt-get install libgoogle-glog-dev libgtest-dev
sudo apt-get install libcxsparse3

2. ceres-solver-1.14.0をダウンロードする

wget ceres-solver.org/ceres-solver-1.14.0.tar.gz

3. 解凍します。

tar -zxvf ceres-solver-1.14.0.tar.gz

4. ceres をコンパイルしてインストールする

sudo mkdir build
cd build
sudo cmake ..
sudo make -j4
sudo make install

おすすめ

転載: blog.csdn.net/xiao_qs/article/details/126650329