您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI DaVinci >> OMAP3x >> 正文
  OpenCV移植到OMAP3730平台全过程           ★★★ 【字体:
OpenCV移植到OMAP3730平台全过程
作者:brucexu1…    文章来源:brucexu1978    点击数:    更新时间:2014-4-29    

1、移植环境说明

宿主机PC,os为ubuntu10.04 ,目标开发板为TI公司的OMAP3730(kernel 2.6.29),我想大致其他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

#makeinstall

 

5、交叉编译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-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

#mkdirman

#mkdirman/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

#makeinstall

 

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

#cdx264-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

#cdffmpeg-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

#makeinstall

 

11、交叉编译OpenCV

#tar –jxvfOpenCV-2.0.0.tar.bz2

#cdOpenCV-2.0.0

#vimconfigure

定位到大概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

#makeinstall

 

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用户登录,执行如下操作:

#ifconfigeth0 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移植以及完成。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    OMAP4 linux中断
    OMAP4开发资源总结
    OMAP4 - Ducati尝鲜
    TI C64x+ DSP CACHE一致性分…
    利用OMAP4平台从容应对集成多…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2