获取opencv源码git clone git@github.com:opencv/opencv.git
获取opencv_contrib源码git clone git@github.com:opencv/opencv_contrib.git
列举所有taggit tag -l
这里以安装3.4.7为例git checkout tags/3.4.7
opencv_contrib同样使用此方法检出对应的版本源码,注意版本号严格一致,否则会出现问题
为了避免污染文件,首先创建一个用于存放编译产生文件的目录mkdir build
cd build
在该目录下运行cmakecmake -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,同样可以使用此方法引入
参考文献
- Arch / Manjaro Linux下 Opencv 编译 配置 查看
- 如何编译 opencv3 和 opencv_contrib(Linux)
- ubuntu16.04下opencv3.2和opencv_contrib编译安装
- OpenCV_contrib模块概述
- CMakeLists.txt添加opencv库注意事项
- CMake找不到opencv库解决办法
- CMakeLists.txt添加opencv库注意事项
- Set Opencv path for a c++ project using Cmake
- How to Have Multiple Versions of OpenCV Side by Side
- cmake简明使用指南
- linux下编译C++写的opencv程序
- Linux下使用自定义路径来运行OpenCV
- 源码包的安装与pkg-config
- pkg-config 维基百科,自由的百科全书
- 理解 Linux中的pkg-config 工具
- /etc/ld.so.conf.d/目录下文件的作用
- linux环境下安装opencv (c++) 编译undefined reference错误的解决办法
- c – 错误:’create’不是’cv :: Tracker’的成员
- 如何让gcc的编译错误信息以英文的方式输出
- 如何在Python和C ++中输出OpenCV版本号
- opencv 跑KCF跟踪 配置opencv_contrib过程中遇到的坑