web-dev-qa-db-ja.com

18.10にopencv4.0をインストールするにはどうすればよいですか?

私は今、ubuntuにopencv4.0.1を数週間インストールしようとしています。 opencvインストール手順 に従い、ライブラリを作成してコンパイルできますが、インストール後もpkgconfigでライブラリを見つけることができません。プログラムをビルドしようとすると、ライブラリが見つからないなどの問題が発生しますエラー。

$ pkg-config --cflags opencv
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
5
j0h

この問題 によると、OpenCVはpkg-configのサポートを終了しました。ただし、これは次のように追加できます。

構成

cmakeを実行するときに、追加パラメーター-D OPENCV_GENERATE_PKGCONFIG=YESを追加します。

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..

次に、以前のようにmakeSudo make installを使用します。

テスト

opencvの代わりにopencv4という名前を使用してください。

pkg-config --cflags opencv4
4
gsxruk

要約:

この方法では、最新のOpenCV 4.0.1を手動でダウンロード、抽出、コンパイル、およびインストールします。 OpenCVのインストールが成功したことを証明するために、実用的なサンプルコードmain.cppも提供されています。

OpenCVとは?

OpenCVは、Intelによって作成され、その後Willow Garageによってサポートされ、現在はItseez、Incによって維持されている画像処理ライブラリです。OpenCVは、Intel®オープンソースコンピュータビジョンライブラリを意味します。これは、いくつかの一般的な画像処理アルゴリズムとコンピュータビジョンアルゴリズムを実装するC関数といくつかのC++クラスのコレクションです。 OpenCVはMac、Windows、Linux(ターミナル環境)で利用できます。

OpenCVをインストールするには、次の手順に従います。

  1. Ubuntu 18.04を更新します。

    次のコマンドを発行します。

    $ Sudo apt-get update
    $ Sudo apt-get upgrade
    
  2. インストールの依存関係。

    次のコマンドを発行します。

    $ Sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config\
    libavcodec-dev libavformat-dev libswscale-dev python3.7 python3.7-dev python-numpy\
    python-scipy python-matplotlib ipython python-pandas python-sympy python-nose\
    libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libjasper-dev\
    libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev\
    libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev\
    libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev\
    libavfilter-dev libavresample-dev
    
  3. OpenCVを取得:OpenCV Releases およびopencv 4.0.1 testdata opencv_extra-master.Zip からopencv 4.0.1をダウンロードします。

  4. OpenCV 4.0.1 Zipパッケージの抽出

    システムの正しいアーカイブパッケージを〜/ Downloadsフォルダーにダウンロードしたら、次のコマンドを実行してOpenCVを抽出します。

    $ Sudo mkdir /opt/opencv
    

    Zipファイルopencv-4.0.1.Zip/opt/opencvフォルダーに抽出するには、次のコマンドを実行します。

    $ Sudo unzip ~/Downloads/opencv-4.0.1.Zip -d /opt/opencv
    

    次に、opencv_extra-master.Zipのテストに必要なテストスーツを含むサイズ490.3 MBの大きなファイルであるopencv 4.0.1を抽出します。次のコマンドを実行して、抽出を完了します。

    $ Sudo unzip ~/Downloads/opencv_extra-master.Zip -d /opt/opencv/opencv-4.0.1
    
  5. 現在のバージョンopencv-4.0.1 を指すセットアップsymlink latest

    次のコマンドを発行して、symlinkを作成します。

    $ cd /opt/opencv
    $ Sudo ln -s opencv-4.0.1 latest
    

    enter image description here

    なぜ最新のシンボリックリンクが必要なのですか?

    • Symlink latestは常にOpenCVインストールの現在のバージョンを追跡します。
    • 明日、新しいバージョン5.0.1が届いたとしましょう。その後、そのバージョンをインストールします。次のコマンドを発行して、古いバージョン4.0.1を指すsymlink latestを削除します。

      $ Sudo unlink /opt/opencv/latest
      

      'symlink latest'は現在のバージョンのopencv-4.0.1を指していますが、最新のバージョン5.0.1の到着により、バージョン4.0.1からの 'symlink latest'が深刻化します。

    • 次のコマンドを使用して、新しいバージョン5.0.1を指すsymlink latestを作成します。

      $ Sudo ln -s opencv-5.0.1 latest
      

      現在、「symlink latest」は新しいバージョンのopencv-5.0.1を指しています。 5.0.1という名前のこのようなバージョンはないことに注意してください。これは、「シンボリックリンク」の力を示すために使用される単なる「架空の」バージョンです。

    • 同時に、古いバージョンを削除せずに保持することもできます。いくつかの理由で古いバージョンで作業したい場合は、単にその古いバージョンを指すsymlink latestを切り替えるだけです。他の設定を変更する必要はありません。

    • step-8 では、PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH, and OPENCV_TEST_DATA_PATH環境変数を設定します。これらすべての環境変数の値にはsymlink latestが含まれるため、後で新しいバージョンを指すように切り替えても、これらの設定は常に変更されません。

  6. OpenCV 4.0.1 Zipパッケージのインストール

    一時的なビルドディレクトリreleaseを作成します。これを<cmake_build_dir>として示します。ここに、生成されたMakefile、プロジェクトファイル、オブジェクトファイル、出力バイナリを配置してそこに入力します。

    $ cd /opt/opencv/latest
    $ Sudo mkdir release
    

    OpenCVをビルドしてインストールするには、次のコマンドを発行します。

    $ cd /opt/opencv/latest/release
    $ Sudo cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=YES -DCMAKE_INSTALL_PREFIX=/opt/opencv/opencv-4.0.1  /opt/opencv/opencv-4.0.1
    

    注:

    • cmakeを実行するときにこのフラグを追加します:-D OPENCV_GENERATE_PKGCONFIG=YES
    • .pcpkg-configファイルを生成してインストールします。
    • cmakeを使用するプロジェクトでOpenCVを使用しない場合に役立ちます。

    ビルドディレクトリrelease execute makeから、これをいくつかのスレッドで実行することをお勧めします。

    $ cd /opt/opencv/latest/release
    $ Sudo make -j4                             # runs 4 jobs in parallel
    $ Sudo make install
    

    ダイナミックローダーが使用するlinks/cacheを更新するには:

    $ Sudo ldconfig
    
  7. opencv-4.0.1のローカルでテストスイートを実行します

    テストケースを開始する前に、OPENCV_TEST_DATA_PATH環境変数を設定する必要があります。

    $ export OPENCV_TEST_DATA_PATH=/opt/opencv/latest/opencv_extra-master/testdata
    

    次のコマンドを発行して、すべてのテストケースを開始します。

    $ cd /opt/opencv/latest/release 
    $ Sudo ./bin/opencv_test_core
    

    Test case Core_globbing.accuracy failed

    テストケースCore_globbing.accuracyが失敗した理由/

    OpenCVソースをビルドし、"./bin/opencv_test_core"フォルダーから"/opt/opencv/latest/release"を実行してコンパイルをテストしようとしました。

    入力画像がないため、このテストケースは失敗しました。したがって、.jpg.pngの写真を撮り、これらの2つの写真の名前をlena.jpglena.pngに変更し、それらを"/opt/opencv/latest/release/bin"フォルダーにコピーして、すべてのテストケースを再度実行してください。

    次のコマンドを発行して、すべてのテストケースを再度実行します。

    $ cd /opt/opencv/latest/release 
    $ Sudo ./bin/opencv_test_core
    

    Test case passed

  8. PATH環境変数のセットアップ

    OpenCVは、以下に示すように設定されるPATH環境変数を設定する必要があります。

    opencv.shディレクトリの下に/etc/profile.d/というファイルを作成します。

    $ Sudo touch /etc/profile.d/opencv.sh
    $ Sudo vi /etc/profile.d/opencv.sh
    

    次の内容を追加します。

    #!/bin/sh
    export PATH=/opt/opencv/latest/bin:/opt/opencv/latest/release/bin:${PATH}
    export LD_LIBRARY_PATH=/opt/opencv/latest/release/lib:$LD_LIBRARY_PATH
    export PKG_CONFIG_PATH=/opt/opencv/latest/lib/pkgconfig
    export OPENCV_TEST_DATA_PATH=/opt/opencv/latest/opencv_extra-master/testdata
    

    ファイルを保存して閉じます。次のコマンドを使用して実行可能にします。

    $ Sudo chmod +x /etc/profile.d/opencv.sh
    

    次に、次のコマンドを実行して、環境変数を永続的に設定します。

    $ source /etc/profile.d/opencv.sh
    

    ログアウトするか、システムを再起動します。

    次に、PATH環境変数を確認します。

    $ echo $PATH
    

    PATH環境変数には、/opt/opencv/latest/binディレクトリと/opt/opencv/latest/release/binディレクトリが必要です。

  9. opencv4.pcはどこですか?

    次のコマンドを発行して、opencv4.pcを見つけます。

    $ Sudo find /opt -name opencv4.pc
    

    opencv4.pcは/ opt/opencv/latest/lib/pkgconfigディレクトリにあります。

    次に、コマンドを使用してpython3.7のバージョンを確認します。

    $ python3.7 version
    

    opencv_versionバイナリはどこにありますか?

    ここで、次のコマンドを使用してopencv_versionの場所を確認します。

    $ Sudo updatedb                                      #  rebuild library cache
    $ locate opencv_version | grep bin/opecv_version
    

    opencv_versionは/ opt/opencv/latest/release/binディレクトリにあります。

    次に、次のコマンドを使用してopencv_versionを確認します。

    $ opencv_version
    

    OpenCVがマシンにインストールされているかどうかを確認するには、次のコマンドを実行します。

    $ pkg-config --modversion opencv4
    

    enter image description here

  10. サンプルテスト:

    • フォルダー~/codeディレクトリーを作成します。
    • 次のプログラムをmain.cppとして保存します
    • main.cpp~/codeディレクトリに移動します
    • テスト用にsample.jpgディレクトリに1 MB未満の~/codeを追加します。

    次のコマンドを発行します。

    $ cd ~/code
    $ ls
    

    サンプルコード:

    #include <opencv2/highgui.hpp>
    #include <iostream>
    
    int main( int argc, char** argv ) {
    
      cv::Mat image;
      image = cv::imread("sample.jpg" , cv::IMREAD_COLOR);
    
      if (! image.data ) {
          std::cout <<  "Could not open or find the image :";
          std::cout <<  "sample.jpg" << std::endl ;
          return -1;
      }
    
      cv::namedWindow( "Display window", cv::WINDOW_AUTOSIZE );
      cv::imshow( "Display window", image );
    
      cv::waitKey(0);
      return 0;
    }
    

    main.cppをコンパイルする

    $ cd ~/code
    $ g++ main.cpp -o output `pkg-config --cflags --libs opencv4`
    

    次のように./outputを実行します。

    $ ./output
    

    サンプルプログラムmain.cppからの出力:

    enter image description here

4
Marmayogi

ライブラリをビルドした後、ビルドディレクトリを指定せずにライブラリを見つけるには、ライブラリをインストールする必要があります。

Sudo make install

これで問題が解決する可能性があります。

0
LizardMaster