Ubuntu Clion使用Cmake 配置 opencv开发。系列一。

作为个人 Linux/Ubuntu 下C++ 开发博客系列第一篇,主要介绍使用,在集成开发环境Clion下,配置加载独立编译的opencv库,并对相应的图片进行处理。本文主要包含一下几个步骤。

1.Ubuntu 下opencv的编译安装。

    1. opencv 下载
    1. opencv 编译安装
    1. opencv 编译测试

2.Clion 内CMakeLists.txt 配置加载opencv。

    1. CMakeLists.txt 配置opencv
    1. opencv Demo

1.Ubuntu 下opencv 的编译安装。

1.opencv 下载。

访问到opencv 的 github 主页,进入release 页面,选择对应版本的 opencv源码,进行下载。在本例中,作者下载使用的是opencv 3.4.0

Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第1张图片
opencv download

2. opencv 编译安装

解压出下载的源码文件,在解压出来的根目录内创建build目录,用来保持cmake 的中间文件。


Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第2张图片
2019-12-16-14-20.png

cd 到build目录内,使用cmake 对opencv进行编译。

cmake -D CMAKE_BUILD_TYPE=RELEASE 
-D CMAKE_INSTALL_PREFIX=/home/xxx/Downloads/tmps/tmp 
-D WITH_GPHOTO2=OFF
-D WITH_GTK=OFF 
-D WITH_CUDA=OFF 
-D WITH_FFMPEG=OFF 
-D WITH_LAPACK=OFF 
-D ENABLE_CXX11=ON
..

命令行参数解释:

  • CMAKE_INSTALL_PREFIX: opencv的安装路径。后期make install 后opencv的最终安装地址。
  • WITH_GPHOTO2: 关闭gphotos
  • WITH_GTK:关闭gtk
  • WITH_CUDA: 关闭CUDA
    ..
  • ENABLE_CXX11:开启CXX11
    通过开启/关闭对应的编译依赖选项,降低编译复杂度/开启对应的功能。
Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第3张图片
编译opencv

Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第4张图片
编译opencv

make:


Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第5张图片
make

其中 “-j12” 参数,12 是为了使用并行的CPU 核心数。和CPU核数相关,可根据具体数量进行调整。


Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第6张图片
make

make 完毕后,运行make install 进行安装opencv。(若安装地址在非当前用户权限 需要使用sudo make install 进行安装)。


Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第7张图片
make install

Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第8张图片
make install

随后可以在编译选项“-D CMAKE_INSTALL_PREFIX=/home/xxx/Downloads/tmps/tmp ” 所制定的目录内看到安装好的opencv文件。


Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第9张图片
opencv installed

1. opencv 编译测试

在用户的 .zshrc/.bashrc 文件内添加以下参数,添加opencv到用户环境中。

#add opencv 3.4.0
export PATH=/home/xxx/Downloads/tmps/tmp/bin:$PATH
export LD_LIBRARY_PATH=/home/xxx/Downloads/tmps/tmp/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/xxx/Downloads/tmps/tmp/lib/pkgconfig

以上路径,要根据自己的安装路径进行更改。

cd 到源码路径 “opencv-3.4.0/samples/cpp”内。运行以下指令编译,尝试编译其中的人脸识别示例程序。

gcc `pkg-config --cflags opencv` -o facedetect facedetect.cpp `pkg-config --libs opencv` -lstdc++
Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第10张图片
gcc

在上面的cpp目录内,输入以下命令,可以看到opencv 检测出来的人脸图片。

./facedetect ../data/lena.jpg
Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第11张图片
face detect

到此,完成了在Ubuntu下 opencv的 源码编译和安装。

2.Clion 内CMakeLists.txt 配置加载opencv。

1. CMakeLists.txt 配置opencv

在clion 的cpp工程中,对CMakeLists.txt 添加以下代码,加载opencv

# Where to find CMake modules and OpenCV
set(OpenCV_DIR "/home/xxx/Downloads/tmps/tmp/opencv-3.4.0/share/OpenCV")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(learn_cpp ${SOURCE_FILES})

# add libs you need
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
# or add all
# include_directories(${OpenCV_INCLUDE_DIRS})

# linking
target_link_libraries(learn_cpp ${OpenCV_LIBS})

其中,在set(OpenCV_DIR "/home/xxx/Downloads/tmps/tmp/opencv-3.4.0/share/OpenCV") 用来指定opencv的安装目录,这个路径并不是安装的时候指定的CMAKE_INSTALL_PREFIX=/home/xxx/Downloads/tmps/tmp,而是更下一级的share/OpenCV 目录。如果指定了安装配置的路径,那么就不能正确的导入模块。

2. opencv Demo

在工程内添加代码,对图片进行下方和右方的填充。
效果如下:


Ubuntu Clion使用Cmake 配置 opencv开发。系列一。_第12张图片
result

部分填充源码:
utils.cpp

#include 
#include 
#include 

using namespace cv;
using namespace std;

int ImgPorcess(char *imgPath) {
    cout << "ss" << endl;
    Mat src, dst;
    char *window_name = "copyMakeBorder Demo";

    src = imread(imgPath);
    if (!src.data) {
        cerr << "Can't open the image!" << endl;
        return EXIT_FAILURE;
    }

    namedWindow(window_name);
    cout << src.rows << endl;
    cout << src.cols << endl;
    dst = src;


    while (true) {
        waitKey(500);
        copyMakeBorder(src, dst, 0, 10, 0, 20, BORDER_CONSTANT, 0);
        imshow(window_name, dst);
    }

}

End

你可能感兴趣的:(Ubuntu Clion使用Cmake 配置 opencv开发。系列一。)