Sep 29, 2018 原创文章
从源码开始,在Ubuntu上安装OpenCV
所需工具
Ubuntu 系统:系统版本 Ubuntu 16.04.4 LTS
Cmake: cmake version 3.5.1
Make: GNU Make 4.1
OpenCV 源码:版本 2.4.13.6 下载地址:https://www.opencv.org/releases.html 或 https://github.com/opencv/opencv/archive/2.4.13.6.zip (其他版本的OpenCV类似)
从源码开始安装
使用CMake 生成 makefile
1、解压下载到的压缩包
2、在源码的根目录下新建文件夹“build”
3、进入到新建的”build”文件下,生成CMAKE配置环境,并进行配置
cd build
ccmake .
首先是按照要求生成config,待其自动完成后,对cmake选项进行配置。
这里有两个需要注意的选项:
CMAKE_INSTALL_PREFIX /usr/local
WITH_CUDA OFF
第一个选项是选择最后的安装位置,第二个选项是选择是否需要安装cuda版本
完成设置后,按c保存设置,再按q退出设置界面,然后进入下一步
4、生成Makefile,并查看CMAKE的配置情况
cmake .
使用Make 编译并安装
在使用cmake生成Makefile完成之后,开始使用make进行编译和安装。这一切同样是在之前生成的build文件夹之下完成的。
1、进入到build文件夹下
sudo make install
输入命令,等待完成编译和安装,这一过程需要一段较长的时间,视电脑的配置而定。
编写Demo测试安装结果
代码清单
在完成了编译和安装之后,需要编写一个简单的demo测试一下安装是否成功。具体的代码如下所列。其实现的功能就是读取一张图片并显示出来。
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("./lena.jpg");
imshow("srcIMage",srcImage);
waitKey(0);
return 0;
}
编写CMakeLists.txt
编写完成代码,还需要手动编写CMakeLists.txt文件,以方便使用CMake生成makefile,并使用make完成最终的编译。
set(OpenCV_DIR "/usr/local/opencv/share/OpenCV")
# project name
PROJECT(opencv_lena)
# requirement of cmake version
cmake_minimum_required(VERSION 3.5)
# set the directory of executable files
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${opencv_lena_SOURCE_DIR}/bin)
# find required opencv
find_package(OpenCV REQUIRED)
# directory of opencv headers 包含Opencv的头文件
include_directories(${OpenCV_INCLUDE_DIRS})
# name of executable file and path of source file
add_executable(opencv_lena main.cpp)
# directory of opencv library 设置包含的头文件的路径
link_directories(${OpenCV_LIBRARY_DIRS})
# opencv libraries 设置库文件的路径
target_link_libraries(opencv_lena ${OpenCV_LIBS})
在CMakelists.txt中:
1、多版本OpenCV切换
set(OpenCV_DIR “/usr/local/opencv/share/OpenCV”)
如果安装了多个版本的OpenCV,则需要上述语句,告诉CMake 所需的OpenCV版本的安装路径在哪里。
2、设置项目名称
# project name
PROJECT(opencv_lena)
3、设置CMake所需的最低版本
# requirement of cmake version
cmake_minimum_required(VERSION 3.5)
4、设置最终生成的二进制文件的位置
# set the directory of executable files set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${opencv_lena_SOURCE_DIR}/bin)
5、搜寻OpenCV所需的可执行文件
# find required opencv find_package(OpenCV REQUIRED)
6、添加包含OpenCV的头文件
# directory of opencv headers 包含Opencv的头文件 include_directories(${OpenCV_INCLUDE_DIRS})
7、向工程中添加代码文件
# name of executable file and path of source file add_executable(opencv_lena main.cpp)
8、连接包含头文件的路径
# directory of opencv library 设置包含的头文件的路径 link_directories(${OpenCV_LIBRARY_DIRS})
9、连接所需的库文件
# opencv libraries 设置库文件的路径 target_link_libraries(opencv_lena ${OpenCV_LIBS})
使用CMake+Make完成编译
完成了CMakeLists.txt文件的编写,下面使用CMake和Make完成demo工程最后的编译工作。
1、使用CMake生成Makefile
在工程文件夹下面新建build文件,然后进入。
输入:
cmake ..
等待完成
– Configuring done
– Generating done
– Build files have been written to: /home/video201/imszp/opencv_example/test/build
2、使用Make进行编译
进入build文件夹,输入命令:
make
等待完成编译
Scanning dependencies of target opencv_lena
[ 50%] Building CXX object CMakeFiles/opencv_lena.dir/main.cpp.o
[100%] Linking CXX executable ../bin/opencv_lena
[100%] Built target opencv_lena
完成编译之后,在即可在CMakeLists.txt中设定的文件夹下面看到生成的二进制可执行文件。运行,即可看到结果如下: