查看: 2911|回复: 0

【BPI-M2 Berry试用】安装opencv3.4.0(包含contrib模块)

[复制链接]
  • TA的每日心情
    慵懒
    2024-5-31 23:20
  • 签到天数: 302 天

    连续签到: 2 天

    [LV.8]以坛为家I

    发表于 2018-3-21 22:59:23 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 day_day 于 2018-3-22 00:35 编辑

    过去半年时间我终于成功编译安装opencv,而在这个过程中,opencv甚至已经从3.2.0一路到3.4.1了。之前因为依赖项问题导致一直无法成功编译。

    (一)依赖项问题
    依赖项我参考了一下连接,当然里面很多依赖项对我来说并没有用,比如所有跟python有关的……
    1. sudo apt-get install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
    2. sudo apt-get install build-essential cmake git
    3. sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
    复制代码

    此外,安装过程中还有tbb、gst等库
    1-gst.jpg
    解决方案:
    1. sudo apt-get install libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev   
    复制代码

    这是gst的,tbb可自行百度


    (二)libpng库解决方案
    迷惑我最长时间的是png库,我猜测是香蕉派的镜像做得不好,无论我如何重装png(libpng libpng12 libpng16)都无法解决png库的函数未声明问题:
    2-png.jpg
    这时我看到cmake生成出现以下问题:
    3-png.png
    如果是正常的cmake在install虚线线面只有configure done,这里多出这个意思是可能系统本来就有png库,然后apt又安装了png库,两个库冲突了。我怀疑镜像本身有一个并没有注册在apt里面,而且没用安装在/usr/local下面的png库,因为我如何remove都没办法溢出libpng12、libpng16。总之各种情况很复杂,这一点浪费了大量时间都没用解决,最后只能通过
    1. -DWITH_PNG=OFF \
    复制代码


    强行关掉png依赖,这就证明在这个编译安装的opencv中无法处理png图片,但这也是没办法的,总不能因为一个坏掉的库就不安装opencv3.4。


    (三)系统问题
    为了安装opencv3.4,我无数次把系统折腾到废掉,最近一次是因为安装opencv3.4的时候使用了-j4编译,内存溢出,然后整个系统瘫痪,强制重启后ui界面丢失。
    4.jpg
    系统安装上,最好安装17年11月份那个ubuntu镜像,8月份的镜像在upgrade的时候会出现足以把人逼疯的依赖问题。
    由于安装opencv过程中需要安装大量的以来,换国内源也就成为很重要的问题:
    建议参考这个帖子:
    http://blog.csdn.net/wr132/article/details/56700479
    把 /etc/apt/sources.list里面所有的
    1. http://ports.ubuntu.com/
    复制代码


    换成
    1. http://mirrors.ustc.edu.cn/ubuntu-ports/
    复制代码


    这个时候就基本没用问题了,sources.list里面最后两行不是port.ubuntu.com的就不用管,留在那。




    (四)fPIC库问题
    在好不容易解决以上问题之后,出现了一个很大的阻碍:

    1. relocation R_ARM_THM_MOVW_ABS_NC against `__stack_chk_guard' can not be used when making a shared object; recompile with -fPIC
    复制代码


    根据各大论坛相似问题的解决方法,证明是编译过程没用加入fPIC库。那么opencv的编译安装如何加入fPIC库呢?
    直接的答案并没有在搜索引擎中找到过方法,最后只能自己尝试加入了一个带pic字样的编译选项:
    1. ENABLE_PIC
    复制代码

    5.png

    结果真的被我撞对了。


    (五)动态库与静态库问题
    最后成功编译安装后,兴冲冲去看才发现安装的都是.a库,一堆依赖问题!
    原来是这个选项的锅:
    6.png
    一定要把他加上


    (六)lz库问题
    曾经遇到一个很头大的错误,是关于'gzeof'、'gzopen'这些函数未定义的问题。
    根据资料显示这些函数都属于lz库的,但lz库肯定是安装了的,那为什么又会没用定义呢?
    后来发现是没用把这个选项选上:
    DTU$$ZQP)9YW8XHL(AE%(MU.png
    如果不选上的话,即使opencv成功编译安装,make代码的时候也会出现上面'gzeof'、'gzopen'这些函数未定义的问题,这时候可以手动在makefile后面加上-lz,但终究是比较麻烦。


    (七)建议使用cmake-gui进行配置,cmake脚本的话会很容易出问题的。
    最后记得把OPENCV_EXTRA_MODULES_PATH选项加上contrib模块所在路径,记得contrib模块要挂载home目录下,编译所在的环境可以不属于home目录,而在ext4格式的外挂存储器上操作。
    cmake-gui重要选项:
    11.png 12.png 13.png 14.png 15.png

    (八)配置
    最后切记:
    sudo gedit /etc/ld.so.conf.d/opencv.conf
    末尾加入/usr/local/lib
    保存退出sudo ldconfig #使配置生效
    具体参考:
    http://blog.csdn.net/lanbing510/article/details/41698517

    (九)镜像8g的镜像,百度云没有会员,用的是一个不出名的网盘,上传完再分享,如果不想折腾的朋友可以直接使用我的镜像。
    https://u17032674.ctfile.com/fs/17032674-241755776

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 14:59 , Processed in 0.115937 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.