安装
1 安装cmake及一些依赖库
$ sudo apt-get install cmake
$ sudo apt-get update //更新源
$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
2 安装opencv (非移植–ubunut中)
从官网下载opencv并解压,cd命令进入opencv的目录
cmake .
sudo make
sudo make install
配置(移植arm中)
1 将opencv的库加入到路径,从而让系统可以找到
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
末尾添加
/usr/local/lib
$ sudo ldconfig #使配置生效
2 编辑bash.bashrc
$ sudo gedit /etc/bash.bashrc
末尾添加2行
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
$ source /etc/bash.bashrc #使配置生效
$ sudo updatedb #更新database
OpenCV 的交叉编译
1 cmake-gui 打开cmake的gui界面,开始进行配置,配置过程如下图所示:
$ cmake-gui
cmake-gui 填以下信息
/home/huazai/huazai/opencv-3.2.0
/home/huazai/huazai/opencv-arm
arm-linux
3.1.0
/opt/goke/ct_glibc/4.6.1/usr/bin/arm-goke-linux-gnueabi-gcc
/opt/goke/ct_glibc/4.6.1/usr/bin/arm-goke-linux-gnueabi-g++
/opt/goke/ct_glibc/4.6.1/usr
2 填入opencv的根目录、生成文件的目录
3 在下图的界面中选择交叉编译工具链以及库文件,/usr/local/arm/4.3.2为交叉工具链的目录
5 此时主界面如下图所示,这时Cmake会读取程序的一些配置信息,可以再下图红框中对每一个编译选项进行修改,这里去掉WITH_TIFF支持并修改安装路径,其他配置可以根据需求选择。
6 替换
勾掉WITH_TIFF支持
点击 generate
$ cd opencv-arm
$ vi CMakeCache.txt
下找到CMAKE_EXE_LINKER_FLAGS:STRING=''替换成:
CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -ldl -lrt
7 编译
opencv-arm$ make
opencv-arm$ sudo make install
8 编译生成 lib目录
lib文件夹即生成的库文件,拷贝到开发板对应目录即可
9 编译应用程序
$ cd ~/opencv-3.2.0/samples/cpp/example_cmake
$ CMakeLists.txt //将该文件修改为以下内容
# this is required
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_FIND_ROOT_PATH /opt/goke/ct_glibc/4.6.1/usr/ /opt/goke/ct_glibc/4.6.1/usr)
set(ARM_LINUX_SYSROOT /opt/goke/ct_glibc/4.6.1/usr/ CACHE PATH "ARM cross compile system root")
# search for programs in the build host directories (not necessary)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(TOOLCHAIN_DIR "/opt/goke/ct_glibc/4.6.1/usr/")
set(CMAKE_C_COMPILER "/opt/goke/ct_glibc/4.6.1/usr/bin/arm-goke-linux-gnueabi-gcc")
set(CMAKE_CXX_COMPILER "/opt/goke/ct_glibc/4.6.1/usr/bin/arm-goke-linux-gnueabi-g++")
set(CMAKE_VERBOSE_MAKEFILE ON)
cmake_minimum_required(VERSION 2.8)
project( LoadImage )
set(OpenCV_DIR /home/huazai/huazai/opencv-arm)
include_directories(/home/huazai/huazai/opencv-arm/include)
find_package( OpenCV REQUIRED )
add_executable( LoadImage LoadImage.cpp )
target_link_libraries( LoadImage ${OpenCV_LIBS} )
$ cmake .
$ vi CMakeCache.txt
70 //Flags used by the linker.
71 CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl
$ make
出现以下错误时:
/opt/goke/ct_glibc/4.6.1/usr/bin/../lib/gcc/arm-goke-linux-gnueabi/4.6.1/../../../../arm-goke-linux-gnueabi/bin/ld: warning: ../../lib/libopencv_videoio.so, needed by /home/huazai/huazai/opencv-arm/lib/libopencv_videostab.so, not found (try using -rpath or -rpath-link)解决方法:
将 /home/huazai/huazai/opencv-arm 下的lib/* 和include/* 全部拷贝到 交叉工具链的/opt/goke/ct_glibc/4.6.1/usr/arm-goke-linux-gnueabi/对于的目录下