Live & Learn
分类: LINUX
2017-07-14 10:11:12
OpenCV是Intel支持的开源计算机视觉库。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。它不依赖于其它的外部库—尽管也可以使用某些外部库。OpenCV使用BSD License,对非商业应用和商业应用都可以免费使用。OpenCV的主要应用环境是Windows和Linux,本文主要介绍于嵌入式系统下的安装。
Linux版本:fedora24
Opencv版本:opencv-2.1.0 ( 下载地址: )
交叉编译工具:arm-linux-gcc-4.3.2
1.安装CMake:
下载地址:
./bootstrap
make
make install
2.编译OpenCV:
A.解压文件
B.创建/usr/local/opencv-arm/目录,作为CMake编译arm版本的工作目录
C.在X环境下,运行cmake-gui:
a.选择源代码目录:/usr/local/OpenCV-2.1.0
b.选择Build目录:/usr/local/opencv-arm/
c. 点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next
d. Operating System填写arm-inux
e. C Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-gcc
f. C++ Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-g++
g.程序库的Target Root填写/usr/local/arm/4.3.2/
h.点击Finish
i.修改默认配置,默认安装目录为/usr/local,对于交叉编译的库来说并不合适,所以我把CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/lib/opencv/
j.点击Generate生成Makefile
D.在终端界面中,进入目录/usr/local/opencv-arm,运行make编译opencv
编译时发现如下错误:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libcxcore.so: undefined reference to clock_gettime'
../../lib/libcxcore.so: undefined reference topthread_key_create’
../../lib/libcxcore.so: undefined reference to pthread_getspecific'
../../lib/libcxcore.so: undefined reference topthread_setspecific’
../../lib/libopencv_ocl.so:undefined reference to ‘dlopen’
原因是cmake不认识我定义的arm-linux系统标记,没有加上库pthread和rt的链接选项
E.修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt -ldl,重新编译,错误消除
F.运行make install,将opencv生成的库和头文件安装到目录/usr/local/arm/lib/opencv/