linux环境下编译安装opencv

获取opencv源码
git clone [email protected]:opencv/opencv.git
获取opencv_contrib源码
git clone [email protected]:opencv/opencv_contrib.git
列举所有tag
git tag -l

这里以安装3.4.7为例
git checkout tags/3.4.7

opencv_contrib同样使用此方法检出对应的版本源码,注意版本号严格一致,否则会出现问题

为了避免污染文件,首先创建一个用于存放编译产生文件的目录
mkdir build
cd build

在该目录下运行cmake
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local/opencv347 -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ ..

  • -DOPENCV_GENERATE_PKGCONFIG=ON opencv4默认不生产pc文件,需要开启此项
  • -DCMAKE_INSTALL_PREFIX=/usr/local/opencv347 opencv的安装路径,可以省略,将安装到默认/usr/local目录
  • -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ 将 opencv 和 opencv_contrib 一起编译,如果不需要 opencv_contrib 可以将此项去掉

然后是一段等待

成功后执行如下命令开始编译,这里开启了8个线程
make -j8

然后执行
sudo make install

配置

cd /etc/ld.so.conf.d/
sudo touch opencv347.conf
# 根据安装位置
sudo sh -c 'echo "/usr/local/opencv347/lib" > opencv347.conf' 
sudo ldconfig

复制pc文件
sudo cp -f /usr/local/opencv347/lib/pkgconfig/opencv.pc /usr/lib/pkgconfig/opencv347.pc

测试一下
pkg-config --modversion opencv347

测试程序

cpp

#include <opencv2/core.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char **argv) {
    cout << "OpenCV version : " << CV_VERSION << endl;
    cout << "Major version : " << CV_MAJOR_VERSION << endl;
    cout << "Minor version : " << CV_MINOR_VERSION << endl;
    cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl;
    return 0;
}

cmake

cmake_minimum_required(VERSION 3.14)
project(opencvhelloworld)

set(CMAKE_CXX_STANDARD 14)

find_package( OpenCV 3.4.7 REQUIRED )
add_executable(opencvhelloworld main.cpp)
target_link_libraries( opencvhelloworld ${OpenCV_LIBS} )

运行后可以看到opencv版本号

cmakelist文件修改find_package( OpenCV 3.4.7 REQUIRED )可以引入其他版本

cmake

cmake_minimum_required(VERSION 3.14)
project(opencvhelloworld)

set(CMAKE_CXX_STANDARD 14)

find_package( OpenCV 4 REQUIRED )
add_executable(opencvhelloworld main.cpp)
target_link_libraries( opencvhelloworld ${OpenCV_LIBS} )

这个是通过pacman安装的4.1.1,同样可以使用此方法引入

参考文献

猜你喜欢

转载自www.cnblogs.com/zbqhc/p/11550307.html