私は今、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
この問題 によると、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 ..
次に、以前のようにmake
とSudo make install
を使用します。
テスト
opencv
の代わりにopencv4
という名前を使用してください。
pkg-config --cflags opencv4
要約:
この方法では、最新のOpenCV 4.0.1を手動でダウンロード、抽出、コンパイル、およびインストールします。 OpenCVのインストールが成功したことを証明するために、実用的なサンプルコードmain.cpp
も提供されています。
OpenCVとは?
OpenCVは、Intelによって作成され、その後Willow Garageによってサポートされ、現在はItseez、Incによって維持されている画像処理ライブラリです。OpenCVは、Intel®オープンソースコンピュータビジョンライブラリを意味します。これは、いくつかの一般的な画像処理アルゴリズムとコンピュータビジョンアルゴリズムを実装するC関数といくつかのC++クラスのコレクションです。 OpenCVはMac、Windows、Linux(ターミナル環境)で利用できます。
OpenCVをインストールするには、次の手順に従います。
Ubuntu 18.04を更新します。
次のコマンドを発行します。
$ Sudo apt-get update
$ Sudo apt-get upgrade
インストールの依存関係。
次のコマンドを発行します。
$ 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
OpenCVを取得:OpenCV Releases およびopencv 4.0.1 testdata opencv_extra-master.Zip からopencv 4.0.1をダウンロードします。
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
現在のバージョンopencv-4.0.1 を指すセットアップsymlink latest
次のコマンドを発行して、symlink
を作成します。
$ cd /opt/opencv
$ Sudo ln -s opencv-4.0.1 latest
なぜ最新のシンボリックリンクが必要なのですか?
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
が含まれるため、後で新しいバージョンを指すように切り替えても、これらの設定は常に変更されません。
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
注:
-D OPENCV_GENERATE_PKGCONFIG=YES
.pc
のpkg-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
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
テストケースCore_globbing.accuracy
が失敗した理由/
OpenCVソースをビルドし、"./bin/opencv_test_core"
フォルダーから"/opt/opencv/latest/release"
を実行してコンパイルをテストしようとしました。
入力画像がないため、このテストケースは失敗しました。したがって、.jpg
と.png
の写真を撮り、これらの2つの写真の名前をlena.jpg
とlena.png
に変更し、それらを"/opt/opencv/latest/release/bin"
フォルダーにコピーして、すべてのテストケースを再度実行してください。
次のコマンドを発行して、すべてのテストケースを再度実行します。
$ cd /opt/opencv/latest/release
$ Sudo ./bin/opencv_test_core
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
ディレクトリが必要です。
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
サンプルテスト:
~/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
からの出力:
ライブラリをビルドした後、ビルドディレクトリを指定せずにライブラリを見つけるには、ライブラリをインストールする必要があります。
Sudo make install
これで問題が解決する可能性があります。