opencv移植到arm详细过程
ARM-Linux环境下安装OpenCV

1安装辅助软件 (2)1.1安装ARM-LINUX-G++ (2)1.2安装CMAKE-GUI (2)2安装OPENCV (2)2.1下载O PEN CV (2)2.2使用CMAKE编译源码 (2)2.2.1修改cmake的配置。
(4)2.2.2使用cmake生成Makefile文件 (6)3编译和安装 (6)3.1修改编译配置。
(6)3.2编译文件 (7)3.3安装O PEN CV (7)4配置OPENCV (8)4.1配置PKGCONFIG (8)4.2配置SHELL (8)5测试使用 (9)1安装辅助软件1.1安装arm-linux-g++下载arm-linux-gcc-4.3.2.tgz。
然后使用#tar -zxvf arm-linux-gcc-4.3.2.tgz -C / 命令解压。
可以看到其已经被解压到/usr/local/arm/4.3.2目录下了使用命令#vim /etc/bash.bashrc打开文件进行配置。
在最后一行输入下面一句export PATH=$PA TH:/usr/local/arm/4.3.2/bin保存并退出。
打开一个新终端或者在本终端输入#source /etc/bash.bashrc使得配置信息生效。
原理可以查看博文/luotuo44/article/details/89177641.2安装cmake-gui输入命令$cmake-gui后,会提示,尚未安装cmake-gui,即没有安装图形界面。
用其提示的命令安装即可。
安装过程需要联网。
2安装OpenCV2.1下载OpenCV到/projects/opencvlibrary/files/opencv-unix/下载安装opencv。
自己选一个版本。
我使用的是2.40。
下载完成后,把文件解压到/root/download目录下。
2.2使用cmake编译源码切换到root用户(要使用root权限运行cmake-gui)。
opencv的移植到arm开发板的步骤

Opencv移植到开发板的过程在移植opencv前,先要安装几个库:build-essential、manpages-dev、pkg-config、zlib、libpng、libjpeg、libz、libttf。
一、环境:系统:Ubuntu 9.10(内核2.6.31)目标板:sbc6045(系统:Qtopia,内核:2.6.30)交叉编译器:arm-none-linux-gnueabi-gcc二、准备:1、安装依赖库:sudo apt-get install build-essential manpages-dev pkg-config2、安装zlib库,这个是后面库的编译基础。
zlib-1.2.3.tar.gz在/root/opencv目录下# cd /root/opencv# tar -xvzf zlib-1.2.3.tar.gz由于zlib 库的configure 脚本不支持交叉编译选项,只好自己动用了,手动临时把gcc 修改成指向我们的交叉编译器arm-none-linux-gnueabi-gcc# cd /usr/bin# mv gcc gcc_back# ln -s /usr/local/arm/arm-2007q1/bin/arm-none-linux-gnueabi-gcc ./gcc修改完成后回到/root/opencv/zlib-1.2.3 目录下#./configure --prefix=/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi --shared注意:这里配置指向/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi目录,会自动安装在/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/ [include,lib] 目录下,千万不要装错目录了,不然后面会找不到这个库的# make# make install安装完后检查一下目录/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/ [include,lib] ,假如include 中没有zlib.h 之类的头文件,lib 中没有libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的*.h 都需要拷过去,在拷库的时候用cp –a libz.* /…./lib 就行,要用上–a 选项记着把刚才改过的gcc 再改回去,不然后面会出错的!!!!!(一定记得改)# cd /usr/bin# mv gcc_back gcc3、安装libpng库,这个是用来显示libpng图形的,MiniGUI里很多图都是libpng的,如果没有这个库,你的MiniGUI将无法正常工作,切记切记!libpng-1.2.18 .tar.gz在/root/opencv目录下# cd /root/opencv# tar -xvzf libpng-1.2.18 .tar.gz# cd libpng-1.2.18注意这边的配置:①使用交叉编译器②安装目录③—host 指定软将运行平台,不然终端也会提示说叫你使用—host 参数的。
UBUNTU OPENCV 环境搭建

Opencv交叉编译到ARM(基于Qt)一、开发环境:环境:ubuntu10.04交叉编译工具:gcc version4.5.1(ctng-1.8.1-FA)友善的东西opencv版本:OpenCV-2.3.1a.tar.bz2(这里可以下载:/projects/opencvlibrary/files/)cmake:cmake version2.8.0()*:前提是Qt交叉编译已经完成,并能正常使用。
一些依赖:在终端运行:sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev安装:cmakeapt-get install cmake-guiapt-get install cmake解压:tar xvf OpenCV-2.3.1.tar.bz2我使用的是天嵌提供的交叉编译工具EABI_4.3.3。
安装在/opt/EmbedSky/4.3.3/bin/目录下,解压后,进入目录cd OpenCV-2.3.1运行:cmake-gui如果没有安装,系统会提示你安装选择source file 选择build目录点configure然后选择:next填路径:Operating System:arm-none-linuxCompilers:是交叉编译工具GCC与G++的目录,图中是我的目录Target Root:****点Finish然后再回到Cmake目录下:在这里选择该先与不先的东西,同时因为我之前在x86上编译过所以我把CMAKE_INSTALL_PREFIX改成:/usr/local/arm同时添加了WITH_QT因为添加WITH_QT_OPENGL时编译出错,所以后来去掉了。
OpenCV安装与移植

OpenCV的Ubuntu安装和Smart210_ARM开发板移植软硬件环境:宿主机:Ubuntu 10.04 32bit开发板:友善之臂Smart210OpenCV:2.4.10其他:cmake version 2.8.0arm-linux-g++ 4.5.1 / arm-linux-gcc 4.5.1查看Ubuntu版本号的指令为:sudo lsb_release –a,效果如下图1:图1:查看ubuntu的版本号1.Opencv2.4.10在Ubuntu上安装●首先安装必要的软件库安装GCC:sudo apt-get install build-essential安装Cmake:sudo apt-get install cmake安装Git(可选):sudo apt-get install git安装GTK开发版:sudo apt-get install libgtk2.0-dev安装pkg-config:sudo apt-get install pkg-config安装Python:sudo apt-get install python3.2-dev安装Numpy:sudo apt-get install python-numpy安装媒体包:sudo apt-get install ffmpeg安装可选媒体包:sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev●在OpenCV官网下载源码包:/●在/home/brodon/Documents文件夹下解压缩后,命令行输入cmake-gui,配置opencv的x86版本。
具体的操作见图2,注意在安装中,放弃了ffmpeg,OpenGL 库的支持。
cmake完成后进入opencv-x86文件夹,输入make 和make install安装。
arm环境下opencv编译

1、下载opencv的源文件当前是0.9.9,并解压缩2、在工作路径运行配置命令./configure --host=arm-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/opt/crosstools/gcc-3.4.6-glibc-2.3/ --prefix=/usr/opencv/CPPFLAGS所指的头文件和库文件位置应当是arm编译器的所对应的路径,否则会出现编译异常,对宏FD_ZERO的识别问题。
3、执行make,make insatall,这时在/usr/opencv下生成相应的文件。
为了加入gtk的支持使用下面的./configure --host=arm-linux --prefix=$PREFIX --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/opt/gtkdfb/usr/local/include 参数CPPFLAGS=-I/opt/gtkdfb/usr/local/include只要指明了gtk相关库的位置GTHREAD_CFLAGS = -pthread -I/opt/gtkdfb/usr/local/include/glib-2.0 -I/opt/gtkdfb/usr/local/include/glib-2.0/glibGTHREAD_LIBS = -pthread -lgthread-2.0 -lglib-2.0GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/opt/gtkdfb/usr/local/include/gtk-2.0-I/opt/gtkdfb/usr/local/gtk-2.0/gtk-I/opt/gtkdfb/usr/local/gtk-2.0/gdk -I/opt/gtkdfb/usr/local/gtk-2.0/gdk-pixbuf -I/opt/gtkdfb/usr/local/include/atk-1.0/atk -I/opt/gtkdfb/usr/local/include/pango-1.0/pango -I/opt/gtkdfb/usr/local/include/freetype2/freetype-I/opt/gtkdfb/usr/local/include/freetype2/freetype/config -I/opt/gtkdfb/usr/local/include/glib-2.0 -I/opt/gtkdfb/usr/local/include/glib-2.0/glibGTK_LIBS = -Wl,--export-dynamic -lgtk-2.0 -lgdk-2.0 -latk-1.0 -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lm -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0实际编译采用的过程1、下载opencv的源文件当前是1.0.0,并解压缩2、修改configure文件设置GTK的安装路径3、export PERFIX=/用户的指定安装路径4、./configure --host=arm-linux --prefix=$PREFIX --without-carbon --without-quicktime--without-1394libs --without-ffmpeg --without-python --without-swig --disable-static --enable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/opt/gtkdfb/usr/local/include5、make6、make install7、拷贝opencv.pc到指定的PKG_CONFIG_PATH变量所指定的路径中8、转到源程序路径/安装路径/share/opencv/samples/c,使用下面的命令编译程序9、arm-linux-g++ `pkg-config --cflags --libs opencv gtk+-2.0 gthread-2.0 pangoft2 libxml-2.0`drawing.c -o drawing10、把程序挂载到开发板上,使用下面的shell文件执行开发的程序#bin/sh#export QTDIR=$PWDexport TSLIB_ROOT=/opt/gtkdfb/usr/localexport LD_LIBRARY_PA TH=$PWD/lib:/lib:/opt/opencv/libexport TSLIB_TSDEVICE=/dev/input/tslib0export TSLIB_PLUGINDIR=$PWD/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport QT_TSLIBDIR=$PWD/libexport TSLIB_CONFFILE=$PWD/etc/ts.confexport POINTERCAL_FILE=$PWD/etc/ts-calib.confexport TSLIB_CALIBFILE=$PWD/etc/ts-calib.confexport PKG_CONFIG_PA TH=$PWD/lib/pkgconfigexport TSLIB_FBDEVICE=/dev/fb0export LD_PRELOAD=$PWD/lib/libts.so#/root/touchscream/bin/ts_calibrate#$PWD/bin/ts_print_rawexport exec_prefix=$PWD#./arrow#./calendar./drawing11、出现错误libstdc++.so.6: cannot open shared object file: No such file or directory拷贝文件到库文件路径问题:在使用拉普拉斯是出现下面的问题:Formats of input arguments do not match (Laplacian can either transform 8u->16s, or 8u->32f, or 32f->32f.The channel number must be the same.)原因:Laplace变换的输入和输出必须满足提示中所要求的的关系。
Opencv2.0移植ARM全过程

2. 配置选项: $ ./configure --prefix=/home/liuxiu/opencv-arm --enable-pic –enable-shared --cross-prefix=armlinux- --host=arm-linux --extra-cflags=-I/home/liuxiu/opencv-arm/include --extra-ldflags=L/home/liuxiu/opencv-arm/lib --enable-shared --enable-pthread –disable-asm 出现 ./version.sh: 行 2: git: 未找到命令 Platform: ARM System: LINUX asm: no avs input: no lavf input: no ffms input: no mp4 output: no pthread: yes debug: no gprof: no PIC: yes shared: yes visualize: no
二、交叉编译 libjpeg
版本 jpegsrc.v6b,这些库都可以从官网上下载的。
1. 解压进入目录
2. 配置选项: $./configure –prefix=/home/liuxiu/opencv-arm –exec-prefix=/home/liuxiu/opencv-arm –-enableshared --enable-static 下面分别介绍这几个参数的作用: --prefix=/home/liuxiu/opencv-arm : 执行 make install 后,会将与体系无关的文件拷贝到此目录 下,具 体如下: /home/liuxiu/opencv-arm ....................................
嵌入式opencv-2.0.0移植

嵌入式opencv-2.0.0,Qt-4.6.3移植一、移植环境操作系统:ubuntu 14.04交叉编译器:arm-linux-gcc-4.4.3二、移植过程在opencv移植之前我们需要解决opencv的一些模块的依赖关系,目前我们需要的模块的依赖关系由以下几个包提供:jpegsrc.v6b.tar.gz (jpeg函数库)libpng-1.2.18.tar.gz (png函数库库)zlib-1.2.3.tar.gz (z函数库)x264-snapshot-20100410-2245.tar.bz2 (x264函数库)yasm-0.7.2.tar.gz (汇编编译器,编译x264时需要用到)xvidcore-1.3.2.tar.gz (xvid函数库)ffmpeg-0.5.3.tar.bz2 (ffmpeg源码包)O penCV-2.0.0.tar.bz2 (OpenCV源码包)这些包的安装是有顺序的,请按照以下顺序安装。
1、安装交叉编译工具#tar zxvf arm-linux-gcc-4.4.3.tar.gz -C/root/添加环境变量#vim /root/.bashrc在路径中添加/opt/toolschnia/4.4.3/bin与已有的路径用冒号隔开刷新环境变量:#source /root/.bashrc2、交叉编译libz#tar zxvf zlib-1.2.3.tar.gz#cd zlib-1.2.3#CC=arm-linux-gcc ./configure --prefix=/root/arm/4.4.3/arm-none-linux-gnueabi –shared#make#make install3、交叉编译libjpeg#tar –zvxf jpegsrc.v6b.tar.gz#cdjpeg-6b#./configure--prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static修改生成的Makefile文件CC=gcc改为CC=arm-linux-gcAR=ar rc改为AR=arm-linux-ar rcAR2=ranlib改为AR2=arm-linux-ranlib#make需在/opt/toolschnia/4.4.3/arm-none-linux-guneabi目录下创建/man/man1目录,才能执行安装命令。
OpenCV1.0.0移植到ARM (utu2440)

交叉编译zlib交叉编译png交叉编译libjpeg以上三个在minigui移植中已经试过了,具体参考该文件。
在opencv目录下运行:./configure --host=arm-linux --without-gtk --without-carbon --without-v4l --without-v4l2 --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared--disable-apps CXX=arm-linux-g++ --prefix=/home/wudean/opencv-1.0.0/_install注:∙--host=arm-linux :指出交叉编译arm平台∙--without-gtk:忽略gtk+2.0 windows∙--without-carbon: 不使用Mac OS上的X库∙--without-quicktime∙--without-1394libs∙--without-ffmpeg∙--without-python∙--without-swig∙--without-v4l --without-v4l2:不需要v4l和v4l2∙--enable-static :生成静态库∙--enable-shared:生成动态库,这一项必须要有,不要以后可能会出现加载动态库失败∙CXX=arm-linux-g++ :指定编译工具(我用的是4.3.3)∙--prefix=/home/wudean/opencv-1.0.0/_install:这个是安装目录,最好是这样做,以免污染系统OpenCV会用到一些dev的包,如png.h,jpeglib.h,所以需要预先交叉编译好zlib/png/jpeg 库,把他们生成的*.h放到相应的交叉编译器的include里,*.so.*放到lib,还要拷贝到目标板的根目录的lib中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Opencv-2.1.0 的arm移植我的环境Host:Ubuntu 14.04Target:tq2410 with Linux 2.6.30.4Crossing Compiler:arm-linux-gcc 4.3.2一交叉编译链的安装1# cd /usr/local解压,即可得到arm-none-linux-gnueabi 目录# tar xzvf arm-none-linux-gnueabi-4.3.2.tgz -C ./2 编辑/etc/bash.bashrc文件添加把编译器路径到环境变量PA TH中,只要在这个文件中添加下面这2 个语句即可:PATH=/usr/local/arm/4.3.2/bin:$PA THexport PA TH3 编辑完毕后使用source /etc/bash.bashrc 命令执行以下这个文件,让设置生效,之后再输入:# arm-none-linux-gnueabi-gcc -v如果输出下面的信息则表面设置成功:Using built-in specs.Target: arm-none-linux-gnueabiConfigured with:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu--enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72' --with-bugurl=https:///GNUToolchain/--disable-nls--prefix=/opt/codesourcery--with-sysroot=/opt/codesourcery/arm-none-linux-gnu eabi/libc--with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc--with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-p c-linux-gnu/usr--with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-non e-linux-gnueabi-i686-pc-linux-gnu/usr--disable-libgomp--enable-poison-system-directories--with-build-time-tools=/scratch/julian/lit e-respin/linux/install/arm-none-linux-gnueabi/ bin --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin Thread model: posixgcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)但是,此时会报错:bash:/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc:没有那个文件或目录这是因为是为62位机与32位不兼容,在64位ubuntu系统上运行32位程序需要安装32位lib网上很多地方说用#sudo apt-get install ia32-libs可解决,但是我执行之后却显示:# sudo apt-get install ia32-libs正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成现在没有可用的软件包ia32-libs,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到可是下列软件包取代了它:lib32z1 lib32ncurses5 lib32bz2-1.0E: 软件包ia32-libs 没有可供安装的候选者运行以下命令即可:#sudo apt-get install g++-multilib这时即可显示上面的信息,交叉编译链安装完成二OpenCV2.0.0交叉编译过程ps:到这一步后网上很多教程都是开始交叉编译x264,xvid,ffmpeg等等,作者尝试过未果。
所以转而投降cmake-gui,最后顺利编译成功。
强烈推荐cmake-gui,简单实用。
1.安装cmake-gui #sudo apt-get install cmake-qt-gui2.在usr/local新建文件夹# mkdir opencv把下载的OpenCV-2.0.0.tar.bz2解压到usr/local/opencv 目录下3、然后在usr/local/opencv 新建一个opencv-arm 文件夹,作为CMake编译arm版本的工作目录# mkdir opencv-arm如下图所示:3、在终端里调出CMake gui界面:# cmake-gui按照下图方式选择源码目录和build目录然后点击Configure按钮,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next按照如下方式配置:注:/usr/local/arm/4.3.2 为交叉编译工具arm-linux-g++/gcc 的所在包含文件夹(在bin 文件夹里面)注:Target System选项里Operation我认为是arm板子上的操作系统,对应我的Version为2.6.30.4,上图中没有更改然后点击“Finish” 按钮;然后点击Generate按钮生成Makefile;4.在/usr/local/opencv/opencv-arm目录下$sudo make(1)83%报错:Linking CXX executable ../../bin/opencv_createsamples../../lib/libopencv_core.so: undefined reference to `clock_gettime'../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'../../lib/libopencv_core.so: undefined reference to `pthread_key_create解决方法:修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译(3)又报错:Linking CXX executable ../../bin/opencv_createsamples此时又出错:../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc'../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy'../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen'../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree'../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler'../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp'../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemset' 解决方法:修改CMakeCache.txt,WITH_TIFF:BOOL=ON,改成OFF(不再对TIFF图像格式支持。
重新编译,成功5、然后运行make install,将opencv生成的库和头文件(在/usr/local/opencv/opencv-arm/lib下)安装到目录/usr/local/arm/4.3.2/lib/opencv/,结果如下:6、把这5个.so 库文件拷贝到ARM板系统中的/lib 目录下面:(如下是添加之后的截图)7、下来就是编写验证程序了:首先得确保摄像头在ARM板上的使用是正常的,具体情况请查阅大神的博文:《摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用》参考文档:1.Opencv-2.0.0的ARM移植和使用(Ubuntu10.04 / OK6410开发板/ linux3.01)/index.php?c=article&a=read&id=473282. OpenCV移植到ARM 全过程/jemofh159/article/details/75537473.ARM编译OpenCV 2.X/link?url=DI0Ou_QHJC458rLttdZkpws83PTpuI5K10-0FCnF9E3_sfva6 CeM31_AgZsCHsFV2hIQFvP7bsvsdrEsiQWf6qAsJrFLtZ96DwhvkFp_QAS4.在64位ubuntu系统上运作32位程序需要安装32位lib/operating-system/1454963.html。