查看: 3163|回复: 0
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    奋斗
    2025-3-18 08:41
  • 签到天数: 303 天

    连续签到: 1 天

    [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. sudo apt-get install libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev   
    复制代码

    这是gst的,tbb可自行百度


    (二)libpng库解决方案
    迷惑我最长时间的是png库,我猜测是香蕉派的镜像做得不好,无论我如何重装png(libpng libpng12 libpng16)都无法解决png库的函数未声明问题:

    这时我看到cmake生成出现以下问题:

    如果是正常的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界面丢失。

    系统安装上,最好安装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
    复制代码



    结果真的被我撞对了。


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

    一定要把他加上


    (六)lz库问题
    曾经遇到一个很头大的错误,是关于'gzeof'、'gzopen'这些函数未定义的问题。
    根据资料显示这些函数都属于lz库的,但lz库肯定是安装了的,那为什么又会没用定义呢?
    后来发现是没用把这个选项选上:

    如果不选上的话,即使opencv成功编译安装,make代码的时候也会出现上面'gzeof'、'gzopen'这些函数未定义的问题,这时候可以手动在makefile后面加上-lz,但终究是比较麻烦。


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


    (八)配置
    最后切记:
    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

    回复

    举报

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

    本版积分规则

    关闭

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

    【预约参会三重礼】2025 瑞萨电子工业以太网技术日
    2025瑞萨电子工业以太网技术日聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案,通过案例剖析、现场演示、动手实践,全方位解读瑞萨电子最新实时通信技术解决方案,洞察行业发展趋势,助力企业高效开发更具竞争力工业以太网产品。

    查看 »



    手机版|小黑屋|与非网

    GMT+8, 2025-4-29 06:17 , Processed in 0.118513 second(s), 18 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.5

    Copyright © 2001-2024, Tencent Cloud.