[Ubuntu 18.04][Anaconda3]OpenCV-4.2.0配置及测试

环境变量

参考Ubuntu 18.04配置OpenCV 4.2.0

编辑文件/path/to/opencv-4.2.0/install/lib/pkgconfig/opencv4.pc

includedir_old=${prefix}/include/opencv4/opencv
# 修改为
includedir_old=${prefix}/include/opencv4/opencv2

编辑~/.bashrc

# opencv4.2.0
export OpenCV_DIR=/home/zj/opencv/opencv-4.2.0/install
export PKG_CONFIG_PATH=${OpenCV_DIR}/lib/pkgconfig
export CMAKE_PREFIX_PATH=${OpenCV_DIR}

重启系统

查询

$ pkg-config --cflags opencv4
-I/home/zj/opencv/opencv-4.2.0/install/include/opencv4/opencv -I/home/zj/opencv/opencv-4.2.0/install/include/opencv4
$ pkg-config --libs opencv4
-L/home/zj/opencv/opencv-4.2.0/install/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -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_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -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_imgproc -lopencv_core

测试

CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.15)
project(opencv_test)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_PREFIX_PATH /home/zj/opencv/opencv-4.2.0/install)
find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})
include_directories("/home/zj/opencv/opencv-4.2.0/opencv/modules")
include_directories("/home/zj/opencv/opencv-4.2.0/opencv_contrib/modules")

MESSAGE("OpenCV version: ${OpenCV_VERSION}")
MESSAGE("OpenCV OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
MESSAGE("OpenCV OpenCV_LIBS: ${OpenCV_LIBS}")

add_executable(opencv_test main.cpp)
target_link_libraries(opencv_test ${OpenCV_LIBS})

源文件如下:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>

using namespace std;

int main(int argc, char* argv[]) {
    std::cout << "Hello, OpenCV!" << std::endl;

    if (argc != 2) {
        printf("usage: main <Image_Path>\n");
        return -1;
    }
    cv::Mat image;
    image = cv::imread(argv[1], cv::IMREAD_COLOR);
    if (!image.data) {
        printf("No image data \n");
        return -1;
    }

    cv::namedWindow("Display Image", cv::WINDOW_AUTOSIZE);
    cv::imshow("Display Image", image);
    cv::waitKey(0);
    return 0;
}

实现如下:

$ ls
 CMakeLists.txt  main.cpp  lena.jpg

###################################### 配置
$ 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
-- Found OpenCV: /home/zj/opencv/opencv-4.2.0/install (found version "4.2.0") 
OpenCV version: 4.2.0
OpenCV OpenCV_INCLUDE_DIRS: /home/zj/opencv/opencv-4.2.0/install/include/opencv4
OpenCV OpenCV_LIBS: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_gapi;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_datasets;opencv_dnn_objdetect;opencv_dnn_superres;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_hdf;opencv_hfs;opencv_img_hash;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_quality;opencv_reg;opencv_rgbd;opencv_saliency;opencv_shape;opencv_stereo;opencv_structured_light;opencv_superres;opencv_surface_matching;opencv_text;opencv_tracking;opencv_videostab;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zj/opencv/opencv-4.2.0/test

##################################### 编译
$ make
Scanning dependencies of target opencv_test
[ 50%] Building CXX object CMakeFiles/opencv_test.dir/main.cpp.o
[100%] Linking CXX executable opencv_test
[100%] Built target opencv_test

##################################### 执行
$ ./opencv_test lena.jpg 
Hello, OpenCV!