【OK210试用体验】之(六)—— 交叉编译和移植OpenCV 2.4.9 (1) - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】之(六)—— 交叉编译和移植OpenCV 2.4.9 (1)

本帖最后由 郎中令2000年 于 2015-12-6 10:45 编辑

    在Ubuntu 12.04上安装好OpenCV 2.4.9,并实现图像采集之后(详细步骤见https://bbs.elecfans.com/jishu_503398_1_1.html),接下来的工作就是交叉编译OpenCV,将编译得到的.so库文件拷贝到OK210中,实现嵌入式的图像采集。本帖开始正式尝试移植工作。           
    硬件平台:Windows7 64 bit + USB摄像头C270 + OK210
    软件平台:VMware8.0.2 + Ubuntu12.04 + arm-linux-gcc4.3.2 + cmake2.8.7+OpenCV2.4.9

    一、安装cmake-gui
    OpenCV 2.0之后的版本,必须使用CMake创建Makefile
    在终端输入cmake-gui之后,如果提示未安装,可以通过以下指令进行安装:
  1. $ sudo apt-get install cmake-qt-gui
复制代码
    安装好之后,可以通过 cmake --version指令查看cmake的安装版本,楼主的为cmake 2.8.7
   

    二、配置arm-opencv,生成makefile
    首先,需要在个人目录下创建交叉编译文件夹arm-opencv。楼主的OpenCV源文件位于/home/xwp/目录下,故将arm-linux文件夹也创建在该目录下
    创建好之后,首先切换至root用户,运行cmake-gui,照以下步骤进行配置:
    (1)选择源代码目录:/home/xwp/opencv-2.4.9
            (2)选择Build目录:/home/xwp/arm-opencv
            (3)点击Configure
   
            (4)保持generator为Unix Makefiles
            (5)选择Specify options for cross-compiling
            (6)点击Next   
            (7)Operating System填写arm-inux(必填),version填写4.3.2(可以不填)
            (8)C Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-gcc
            (9)C++ Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-g++
           (10)程序库的Target Root填写/usr/local/arm/4.3.2/
   
           (11)点击Finish,即可开始配置






    三、修改cmake的配置
    在完成操作(11),待cmake结束工作,会发现cmake一片红,这时候需要进行一些配置,重新点击configure

    楼主在CSDN博客上面参考了大量的配置例程,但是经过实践,几乎没有能够100%编译的,所以楼主认为在配置方面与个人的虚拟机版本、opencv版本和cmake版本都相关。所以,楼主认为最好的编译方法就是尝试,通过编译过程中出现的错误来进行反复配置和修改,最后肯定可以成功的。楼主的cmake配置修改工作如下:

    (1)加上BUILD_PNG和BUILD_JPEG

    (2)去掉WITH_TIFF,WITH_OPENEXR和BUILD_EXAMPLES

    (3)修改CMAKE_BUILD_TYPE为Release

    (4)修改CMAKE_INSTALL_PREFIX为/usr/local/arm/opencv

    然后重新Configure,观察红色是不是已经全部消失了!如果没有就继续Configure,直到没有红色,然后点击Generate,生成makefile文件。
   
    四、修改编译配置
    进入最初创建的arm-opencv文件夹,找到CmakeCache.txt文件,对其进行修改。
    找到
  1. //Flags used by the linker.
  2. CMake_EXE_LINKER_FLAGS:STRING='  '
复制代码
    修改为
  1. //Flags used by the linker.
  2. CMake_EXE_LINKER_FLAGS:STRING= -lpthread -lrt -ldl
复制代码
   
    五、编译
    修改完,保存。然后在终端编译
  1. # make
复制代码


    这是楼主最后编译成功的截图。编译总是最消耗时间的,出现错误就要认真查阅,楼主会在最后面附上参考文档,相信有楼主的帖子和参考文档,你也可以编译成功。
   
    六、安装
  1. # make install
复制代码
    安装完成以后,进入/usr/local/arm/opencv/lib目录中,就可以看到经过交叉编译之后的OpenCV库了(绿色字体显示)


   本篇帖子的主要内容就到这里了,接下来就是把这些库文件拷贝到OK210开发板子中,进行摄像头图像采集和显示的测试了。根据楼主查阅的资料,知道ARM对opencv的libopencv_highgui.so库不是完全支持,摄像头捕捉函数无法使用。如果测试结果真的是这样,楼主就要用V4L2进行曲线救国了
   
    后话:好久没更帖子了,一篇帖子下来一个下午就没了。楼主这个月13号刚晋升奶爸,应该是喜大普奔的好事,但个人生活因为小家伙的来临变得一塌糊涂,每天总有忙不完的事儿,还望电子发烧友的管理员和各位发烧友见谅~

    最后,附上楼主本帖的参考文献:
           1、http://blog.csdn.net/luotuo44/article/details/8958990
           2、http://blog.csdn.net/b5w2p0/article/details/8976665
           3、http://blog.csdn.net/jiebaoabcabc/article/details/22935185
















arm_opencv_lib.zip

6.22 MB, 下载次数: 57, 下载积分: 积分 -1 分

arm-opencv2.4.9库

5个回复

竹林海宝 发表于 2017-3-6 15:12:11
楼主看到了,恳请能回复我
我在执行cmake-gui 出现如下的提示,该怎么解决了?这个问题困扰我一个星期了,看了好多博客,感觉大家执行cmake-gui就直接出现界面,但我的出现如下提示:
cmake-gui: cannot connect to X server

要安装什么软件吗?具体怎么安装,以前是学单片机的,刚接触linux。请教了
郎中令2000年 发表于 2017-3-13 14:14:10
确实用cmake-gui就可以出现界面了。
(1)你可以先彻底卸载cmake:$ sudo apt-get autoremove --purge cmake-qt-gui
(2)重新安装cmake:$ sudo apt-get install cmake-qt-gui
(3)安装后检查下版本信息:$ cmake --version
(4)切换至root账户,然后运行#cmake-gui
郎中令2000年 发表于 2017-3-13 14:14:36
竹林海宝 发表于 2017-3-6 15:12
楼主看到了,恳请能回复我
我在执行cmake-gui 出现如下的提示,该怎么解决了?这个问题困扰我一个星期了,看了好多博客,感觉大家执行cmake-gui就直接出现界面,但我的出现如下提示:
cmake-gui: cannot connect to X server

确实用cmake-gui就可以出现界面了。
(1)你可以先彻底卸载cmake:$ sudo apt-get autoremove --purge cmake-qt-gui
(2)重新安装cmake:$ sudo apt-get install cmake-qt-gui
(3)安装后检查下版本信息:$ cmake --version
(4)切换至root账户,然后运行#cmake-gui
lee_st 发表于 2017-4-18 13:54:18
向楼主学习一下下,,
龙旭东 发表于 2019-4-27 20:52:14
楼主我遇到个问题,请教一下:
就是我交叉编译的是opencv3.2.0,带cmake-gui后,在opencv的文件里进行make 的时候,一直出现一个问题:
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:437: error: expected unqualified-id before '__complex__'
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:437: error: expected ')' before '__complex__'
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:438: error: expected unqualified-id before '__complex__'
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:438: error: expected ')' before '__complex__'
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:439: error: expected unqualified-id before '__complex__'
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:439: error: expected ')' before '__complex__'
/home/lxd/ARR/opencv3.2.0/opencv-3.2.0/modules/core/src/hal_internal.cpp:440: error: expected unqualified-id before '__complex__'
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-27 12:20 , Processed in 0.647744 second(s), Total 43, Slave 32 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表