1.contribモジュールを追加します
注:バリアントコントリビューションモジュールは、OPENCV_EXTRA_MODULES_PATHのopencv_contribの下のmodulesフォルダーに入力する必要があります。
2.OPENCV_GENERATE_PKGCONFIGを確認します
チェックしないと、後で構成を表示したときに見つかりません。
$ pkg-config --cflags --libs opencv4
Package opencv4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv4' found
3.コンパイルの問題と解決策
以下のブログを参照してください。コンパイルでまだいくつかのエラーが発生しました。これらのエラーはすべての人が発生するとは限りません。
リファレンスブログ:Ubuntu18.04インストールOpenCV4.2.0 + OpenCV_Contrib4.2.0ライブラリ
[ 85%] Built target opencv_perf_video
[ 85%] Linking CXX executable ../../bin/opencv_test_gapi
[ 85%] Built target opencv_test_gapi
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2
エラーを確認してください:
/home/wmz/Downloads/opencv/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory
#include "boostdesc_bgm.i"
^~~~~~~~~~~~~~~~~
compilation terminated.
modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/build.make:91: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o' failed
make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o] Error 1
CMakeFiles/Makefile2:6648: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all' failed
make[1]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
ソリューションリファレンス:OpenCVとopenc_contribプロンプトをコンパイルすると、boostdesc_bgm.iファイルエラーソリューションが見つかりません
参照:https://github.com/opencv/opencv_contrib/issues/1301
リファレンスのダウンロード:OpenCVをインストールすると、boostdesc_bgm.iファイル(Baiduクラウドリソースを含む)が見つからないという問題の解決策が求められます。
問題を解決した後に再コンパイルします。
sudo make clean
sudo make -j8
ただし、それでも失敗しましたが、エラーが変更されました。
/home/wmz/Downloads/opencv/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
#include "features2d/test/test_detectors_regression.impl.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/build.make:86: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/test/test_features2d.cpp.o' failed
make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/test/test_features2d.cpp.o] Error 1
CMakeFiles/Makefile2:6746: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/all' failed
make[1]: *** [modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
参照:opencvがfeature2d / test /test_detectors_regression.impl.hppファイルを見つけることができません
以下で試して、559行目に追加してください。
include_directories("modules")
変更後:
さて、コンパイルは成功しました。
実行を続行します。
sudo make install
4.インストール後に環境変数を構成します
ターミナルに入るか、geditで開きます(vimを置き換えます):
sudo vim /etc/ld.so.conf.d/opencv.conf
内部に追加:
/usr/local/lib
保存して終了し、ライブラリを構成します。
sudo ldconfig
環境変数の変更:
sudo gedit /etc/bash.bashrc
保存して終了し、今すぐテストして、次のように入力します。
pkg-config --cflags --libs opencv4
注:pkg-config --cflags --libs opencv4はopencv4以降のみであり、以前のバージョンはpkg-config --cflags --libsopencvです。
結果の表示:
$ pkg-config --cflags --libs opencv4
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cudabgsegm -lopencv_cudafeatures2d -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_cudacodec -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_cudaoptflow -lopencv_optflow -lopencv_cudalegacy -lopencv_videoio -lopencv_cudawarping -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_imgproc -lopencv_cudaarithm -lopencv_core -lopencv_cudev
5.テストプログラムを作成します
(1)試験手順1
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img=imread("test.jpg");//
imshow("test",img);
waitKey(5000);
return 0;
}
コンパイル:
g++ -std=c++11 test.cpp -o test `pkg-config --cflags --libs opencv4`
エラー:
/usr/local/lib/libopencv_core.a(cuda_host_mem.cpp.o): In function `cv::cuda::registerPageLocked(cv::Mat&)':
cuda_host_mem.cpp:(.text._ZN2cv4cuda18registerPageLockedERNS_3MatE+0x31): undefined reference to `cudaHostRegister'
cuda_host_mem.cpp:(.text._ZN2cv4cuda18registerPageLockedERNS_3MatE+0xab): undefined reference to `cudaGetErrorString'
/usr/local/lib/libopencv_core.a(cuda_host_mem.cpp.o): In function `cv::cuda::unregisterPageLocked(cv::Mat&)':
cuda_host_mem.cpp:(.text._ZN2cv4cuda20unregisterPageLockedERNS_3MatE+0x1b): undefined reference to `cudaHostUnregister'
cuda_host_mem.cpp:(.text._ZN2cv4cuda20unregisterPageLockedERNS_3MatE+0x40): undefined reference to `cudaGetErrorString'
collect2: error: ld returned 1 exit status
明日も解決を続けてください。
(2)試験手順2
ファイル名:DisplayImage.cpp
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
CMakeLists.txtファイルを作成します。
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
現在のパスで実行します。
mkdir build
cd build
cmake ..
make
./DisplayImg lena.jpg
lena.jpg画像をビルドフォルダにコピーする必要があります。
実装効果は次のとおりです。
wmz@wmz:~/Documents/test/opencv-t2$ mkdir build
wmz@wmz:~/Documents/test/opencv-t2$ cd build
wmz@wmz:~/Documents/test/opencv-t2/build$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found CUDA: /usr/local/cuda (found suitable exact version "10.2")
-- Found OpenCV: /usr/local (found version "4.2.0")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/wmz/Documents/test/opencv-t2/build
wmz@wmz:~/Documents/test/opencv-t2/build$ make
Scanning dependencies of target DisplayImage
[ 50%] Building CXX object CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o
[100%] Linking CXX executable DisplayImage
[100%] Built target DisplayImage
wmz@wmz:~/Documents/test/opencv-t2/build$ ./DisplayImage lena.jpg
wmz@wmz:~/Documents/test/opencv-t2/build$
参照:OpencvのインストールとLinuxでの簡単なテスト
また、samples / cpp / example_cmakeディレクトリに直接移動して、順番に実行することもできます。
cmake . #这个是以字母C开头的
make
./opencv_example
カメラを呼び出して「ハローワールド」を出力します。