交叉编译OpenCV2.4.9
来源:互联网 发布:krpano全景漫游软件 编辑:程序博客网 时间:2024/05/16 10:04
系统环境:
Ubuntu12.04 + OpenCV2.4.9 + arm-linux-gcc-4.3.2
(一)安装依赖库
运行OpenCV需要依赖一些库文件,所以在对OpenCV进行交叉编译之前,首先要安装7个依赖库。依赖关系如下:
OpenCV |--------zlib |--------jpeg |--------libpng |--------zlib |--------tiff |--------zlib |--------ffmpeg |--------x264 |--------xvidcore
首先需要下载这7个库文件,直接百度/谷歌搜索这些库文件,进入官网下载,解压。
1)libz的交叉编译
进入zlib的解压目录:
#CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/opencv-depend --shared#make#make install
2)libpng的交叉编译
进入libpng的解压目录
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared --enable-static --#host=arm-linux#make#make install
3)libjpeg的交叉编译
进入libjpeg的解压目录:
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared –enable-static#gedit Makefile (修改Makefile中cc =arm-linux-gcc ar=arm-linux-ar ar2=arm-linux-ranlib)#make
make过程中会报错:
#make: ./libtool: Command not found
这是因为,缺少libtool文件。
解决方法:在上一步骤解压的libpng路径下就有libtool这个文件,将其复制一份到libjpeg路径下即可。
重新编译安装:
#make#make install
make install的过程中又会报错:
#/usr/bin/install: cannot create regular file `/usr/local/libjpeg/bin/cjpeg': No such file or directory
这是因为不存在 /usr/local/libjpeg/bin路径,及没有bin这个文件夹。
解决方法:进入/usr/local/libjpeg/路径下,新建一个bin文件夹即可。
#cd /usr/local/libjpeg#mkdir bin
然后,重新执行 make install,上述的“文件夹不存在错误还会出现几次”,同样地,缺少哪个文件夹,我们就过去新建哪个文件夹就可以了。大概还会缺少man/man1, include等文件夹。记得,新建文件夹后要重新 make install,直到安装成功为止。
4)yasm的交叉编译
进入yasm的解压目录:
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared --enable-static --host=arm-linux#make#make install
5)libx264的交叉编译
进入libx264的解压目录:
#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux –disable-asm --prefix=/usr/local/arm/opencv-depend#make#make install
6)libxvid的交叉编译
进入build/generic目录:
#./configure --prefix=/usr/local/arm/opencv-depend --host=arm-linux --disable-assembly#make#make install
7)ffmpeg的交叉编译
进入ffmpeg目录:
#./configure --prefix=/usr/local/arm/opencv-depend --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale#make#make install
至此,所有的依赖库都已安装完毕,安装路径为:/usr/local/arm/opencv-depend
(二)交叉编译OpenCV2.4.9
1)下载OpenCV2.4.9
到sourceforge上下载opencv源码:OpenCV2.4.9-unix
解压缩到 /opt路径下
2)安装cmake gui
#apt-get install cmake cmake-qt-gui
3)拷贝文件
把 /usr/local/arm/opencv-depend 目录下lib和include所有的文件分别拷贝到 /usr/local/arm/4.3.2/arm-non-linux-gnueabi 下的lib和include下
4)配置交叉编译工具链
#cd opencv-2.4.9#mkdir build#cd build#vi toolchain.cmake
粘贴以下配置:
###########user defined###################################set( CMAKE_SYSTEM_NAME Linux )set( CMAKE_SYSTEM_PROCESSOR arm )set( CMAKE_C_COMPILER arm-none-linux-gnueabi-gcc )set( CMAKE_CXX_COMPILER arm-none-linux-gnueabi-g++ )###########user defined###################################set( CMAKE_FIND_ROOT_PATH "/usr/local/arm/opencv-depend" )set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)##########################################################
保存之后:
#cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ../#cmake-gui
默认安装目录为 opencv-2.4.9/build/install ,改为 /usr/local/arm/opencv-install
修改编译选项:
CMAKE_INSTALL_PREFIX /usr/local/arm/opencv-install
去掉 WITH_CUDA
去掉 WITH_GTK
去掉 WITH_1394
去掉 WITH_GSTREAMER
去掉 WITH_LIBV4L (因为后面有另外一个WITH_V4L)
去掉 WITH_TIFF
去掉 BUILD_OPENEXR
去掉 WITH_OPENEXR
去掉 BUILD_opencv_ocl
去掉 WITH_OPENCL
根据自己的需要选择编译的选项,有的选项需要安装相应的依赖的库,否则编译会出错
完成后 Generate
修改 CMakeCache.txt, CMAKE_EXE_LINKER_FLAGS原来为空,加上 -lpthread -lrt
#make#make install
(三)最后一个步骤
1)将 /usr/local/arm/opencv-install下的文件夹 opencv2 复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/include/下
2)将 /usr/local/arm/opencv-depend/lib/下的所有文件 和 /usr/local/arm/opencv-install/lib/下的所有文件 都拷贝到板子上/lib目录下,OpenCV的程序即可在ARM板子上运行了。
本文的交叉编译方法参考了以下两篇博文和一个帖子的4楼,在此表示感谢!
OpenCV移植到ARM9
Opencv2.4.9交叉编译
arm-linux-gcc交叉编译opencv源程序的错误:opencv2/core/core_c.h: No such file or directory
- Opencv2.4.9交叉编译
- opencv2.4.9交叉编译
- Opencv2.4.9交叉编译
- 交叉编译OpenCV2.4.9
- Opencv2.4.9交叉编译+拍照
- Ubuntu14.04 Opencv2.4.9交叉编译
- 海思3515,交叉编译opencv2.4.9
- 交叉编译Opencv2.4.9完全实录
- 交叉编译OpenCV2.3.1
- 交叉编译OpenCV2.3.1
- opencv2.0 交叉编译
- friendlyarm6410交叉编译OpenCV2.3.1
- opencv2.x for arm 交叉编译
- xubuntu编译OpencV2.4.2出现make交叉编译出现错误。
- 海思3515,交叉编译opencv2.4.9,个人经验分享,欢迎补充
- 编译opencv2.4.9
- opencv2.2 交叉编译 及在arm开发板测试
- 交叉编译opencv2.31与移植至arm9
- Hibernate
- 计蒜之道初赛第一场-阿里的新游戏
- 简单的注册与登陆
- Python 输出json到文件,让json.dumps输出中文 实例代码
- spring搭建,为什么用spring,对控制反转,依赖注入的理解
- 交叉编译OpenCV2.4.9
- 第二行代码学习笔记——第十章:后台默默的劳动者——探究服务
- Sublime 配置
- django 上传文件
- 数据结构实验之排序七:选课名单
- 算法导论 练习题 15.1-3
- JavaScript学习-操作样式的DOM API
- C++异常处理机制
- MySQL5.7.18自解压Zip 官网下载、安装与配置