OpenCV移植到OMAP3730平台全过程

来源:互联网 发布:mac pscs6破解安装教程 编辑:程序博客网 时间:2024/06/15 09:41

1、移植环境说明

宿主机PC,os为ubuntu10.04 ,目标开发板为TI公司的OMAP3730(kernel 2.6.32),我想大致其他ARM架构也一样。


2、移植OpenCV所需的资源包汇总

/root/need_to_cross_compile_version2/---->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源码包)---->OpenCV-2.0.0.tar.bz2                                      (OpenCV源码包)       /opt/arm-linux-gcc/---->arm-linux-gcc-4.3.2.tgz                              (交叉编译工具链)
说明:(1)以上资源包中ffmpeg是为了OpenCV能够处理视频,而ffmpeg依赖于x264和xvid两个库,而交叉编译libx264时需要用到汇编编译器yasm。

 

 

3、安装交叉编译器

#tar  -zvxf  arm-linux-gcc-4.3.2.tgz  -C /root/

添加环境变量

#vim  /etc/environment

在路径中添加/root/arm/4.3.2/bin与已有路径用冒号隔开:

刷新环境变量:

#source  /etc/enviroment

 

4、交叉编译libz

#tar  -zvxf zlib-1.2.3.tar.gz#cd  zlib-1.2.3#CC=arm-linux-gcc ./configure  --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --shared#make#make install

 

5、交叉编译libjpeg

#tar  –zvxf  jpegsrc.v6b.tar.gz   #cd jpeg-6b#./configure --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared  --enable-static

修改生成的Makefile文件:

CC=gcc改为CC=arm-linux-gcc

AR=ar rc改为AR=arm-linux-ar rc

AR2=ranlib改为AR2=arm-linux-ranlib

#make

需在/root/arm/4.3.2/arm-none-linux-gnueabi目录下创建/man/man1目录,才能执行安装命令。

#cd  /root/arm/4.3.2/arm-none-linux-gnueabi#mkdir man#mkdir man/man1#cd /root/need_to_cross_compile_version2/libjpeg-6b#makeinstall

 

6、交叉编译libpng

#tar –zvxflibpng-1.2.18.tar.gz#cdlibpng-1.2.18#./configure--prefix=/root/arm/4.3.2/arm-none-linux-gnueabi--enable-shared --enable-static --host=arm-linux#make#make install

 

7、交叉编译yasm

#tar –zvxfyasm-0.7.2.tar.gz#cd yasm-0.7.2#./configure--prefix=/root/arm/4.3.2/arm-none-linux-gnueabi--enable-shared --enable-static --host=arm-linux#make#make install

 

8、交叉编译libx264

#tar –jvxfx264-snapshot-20100410-2245.tar.bz2#cd x264-snapshot-20100410-2245#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi#make#make install

 

9、交叉编译libxvid

#tar –zvxfxvidcore-1.3.2.tar.gz#cd xvidcore-1.3.2#./configure--host=arm-linux  --disable-assembly --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi#make#make install

 

10、交叉编译ffmpeg

#tar –jxvf  ffmpeg-0.5.3.tar.bz2#cd ffmpeg-0.5.3#./configure--prefix=/root/arm/4.3.2/arm-none-linux-gnueabi--enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm--disable-stripping --target-os=linux --disable-ffserver --enable-libx264--enable-libxvid --cc=arm-linux-gcc --enable-swscale

此处将会检测libx264 libxvid安装是否正确,以及版本是否是ffmpeg支持的,配置无误则编译:

#make#make install

 

11、交叉编译OpenCV

#tar –jxvfOpenCV-2.0.0.tar.bz2#cd OpenCV-2.0.0#vim configure
定位到大概18182行的位置,在“FFMPEGLIBS="-lavcodec -lavformat” 后添加 “-lswscale”, 修改之后变为:“FFMPEGLIBS="-lavcodec -lavformat-lswscale $FFMPEG_SWSCALE_LIBS"”,然后保存退出。

若不修改此信息,OpenCV将不支持libswscale,即无法进行图像格式转换。

# ./configure --host=arm-none-linux-gnueabi--without-gtk --without-carbon --without-quicktime --without-1394libs--with-ffmpeg --without-python --without-swig --enable-static --enable-shared--disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/root/arm/4.3.2/arm-none-linux-gnueabi/include/LDFLAGS=-L/root/arm/4.3.2/arm-none-linux-gnueabi/lib--with-v4l --prefix=/root/arm/4.3.2/arm-none-linux-gnueabi  CXXFLAGS=-O2

若之前的步骤无误,我们将会看到配置信息如下:

Generalconfiguration ================================================     CXX:                     arm-linux-g++     CXXCPP:                  arm-linux-g++ -E     CPPFLAGS:                -I/root/arm/4.3.2/arm-none-linux-gnueabi/include/     CXXFLAGS:                -O2     LDFLAGS:                 -L/root/arm/4.3.2/arm-none-linux-gnueabi/lib     Install path:             /root/arm/4.3.2/arm-none-linux-gnueabi     Debug flags                    Optimization flags        -DNDEBUG -O2-fomit-frame-pointer     MMX/SSE/SSE2/SSE3:             OpenMP support:                External BLAS & LAPACK:   no HighGUI configuration ================================================     Windowing system --------------     Use Carbon / Mac OS X:    no     Use gtk+ 2.x:            no     Use gthread:             no     Image I/O ---------------------     Use ImageIO / Mac OS X:   no     Use libjpeg:             yes     Use zlib:                yes     Use libpng:              yes     Use libtiff:             no     Use libjasper:            no     Use libIlmImf/OpenEXR:    no     Video I/O ---------------------     Use QuickTime / Mac OS X: no     Use xine:                no     Use gstreamer:            no     Use ffmpeg:              yes     Use dc1394 & raw1394:     no     Use dc1394_v2 & raw1394:  no     Use v4l:                 yes     Use v4l2:                yes     Use unicap:              no Wrappers for other languages =========================================     SWIG                          Python                   no     Octave                   no Additional build settings ============================================     Build demo apps           no Now run make ... ======================================================================

确认以上库都支持,则进行编译,安装:

#make#make install

12、将交叉编译好的库文件拷贝到开发板

通过NFS服务器将/root/arm/4.3.2/arm-none-linux-gnueabi/lib目录下生成的所有库文件拷贝到开发板的/lib目录下,若拷贝至其他目录则需指定LD-LIBRARY-PATH,/lib目录则可避免此问题。具体操作如下:

#cp /root/arm/4.3.2/arm-none-linux-gnueabi/lib/lib*/root/worknfs/arm-opencv-2.0

Windows下ZOC超级终端以root用户登录,执行如下操作:

#ifconfig eth0 10.10.204.211#mkdir /mnt/nfs#mount –tnfs –o nolock 10.10.204.210:/root/worknfs /mnt/nfs#cp /mnt/nfs/arm-opencv-2.0/lib*  /lib

至此OpenCV2.0及其依赖库已成功移植到Omap3730开发板。

 

13、编写测试程序arm_save_camera.c,验证移植是否成功,交叉编译:

# arm-none-linux-gnueabi-gcc -o arm_save_camera arm_save_camera.c -I /root/arm/4.3.2/arm-none-linux-gnueabi/include/opencv-L /root/arm/4.3.2/arm-none-linux-gnueabi/lib -lcv -lhighgui -lcvaux -lrt-lpthread -lm -lml -lz -ldl -ljpeg -lpng -lcxcore

将交叉编译好的程序拷贝到开发板上运行,便可通过摄像头拍摄并保存视频sister.avi,将视频文件拷贝的宿主机可以播放,说明OpenCV移植以及完成。

如若转载请注明出处:http://blog.csdn.net/embedded_sky/article/details/20475837

作者:super_bert@csdn

1 0