查看: 7383|回复: 0

树莓派3b编译安装完整OpenCV-3.4.1 for Python3

[复制链接]
  • TA的每日心情
    奋斗
    2021-6-9 11:33
  • 签到天数: 460 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-7-2 10:30:12 | 显示全部楼层 |阅读模式
    分享到:
    没错,就是我,一周没见,我又回来了~
    本次为大家带来的绝对是干货,树莓派3b编译安装OpenCV-3.4.1+OpenCV_Contrib-3.4.1!
    本文主要参考pyimagesearch上Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3这篇文章,英文原版链接在文中。由于该文章年代较早,直接照搬容易遇到一些困扰,本文考虑提供一种更加简单的安装步骤,并解决安装途中可能遇到的问题。
    从头开始的手把手带大家编译安装OpenCV3.4.1哦,包过包教会。要开车了,还没上车的赶紧上车!
    一、Python3虚拟环境和swap分区的配置
    需要注意的是我们需要扩大swap分区,因为树莓派默认的1GB RAM + 100MB SWAP不够用!
    具体细节请参考我在爱板论坛的另一篇帖子:树莓派搭建基于Python3和OpenCV实现的解魔方机器人
    二、OpenCV-3.4.1和OpenCV_Contrib-3.4.1源文件下载
    这里大家可以去官网下载,直接分享下载链接:
    https://github.com/opencv/opencv/archive/3.4.1.zip
    https://github.com/opencv/opencv_contrib/archive/3...
    推荐使用wget下载或者VNC直传,下载完毕后,建立一个文件夹,将两个压缩包解压放里面,放个图:

    三、相关依赖的安装
    这里我们直接参考这篇英文文章:Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3
    由于该文章是16年的,现在照搬会遇到一些问题,使用难度较大,我们参考具有指导意义的一部分来做,这一块就是依赖的安装,主要包括图像和视频IO,如果想更深入了解,建议参考原文。我把这一步需要用到的命令放到下面了,方便大家使用:

    sudo apt-get install build-essential cmake pkg-configsudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-devsudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-devsudo apt-get install libxvidcore-dev libx264-devsudo apt-get install libgtk2.0-devsudo apt-get install libatlas-base-dev gfortransudo apt-get install python2.7-dev python3-dev然后我们进入虚拟环境,使用类似下面这条命令:

    source MyProjects/venv/bin/activate注意进入虚拟环境后,提示符前会有小括号,如图:

    然后我们安装numpy,大家都懂的:
    pip3 install numpy四、OpenCV-3.4.1的编译安装
    因为这里要用到CMake,考虑到可能有读者没有接触过,这里我们使用图形界面,安装cmake-qt-gui:

    sudo apt-get install cmake-qt-gui首先进到opencv-3.4.1的目录下,新建build文件夹,然后在终端激活python虚拟环境的条件下,打开CMake:

    (venv) pi@raspberrypi:~/Downloads/opencv/opencv-3.4.1 $ cmake-gui选择源文件路径,编译文件夹选择刚才新建的build文件夹,
    点击左下角Configure,第一次完成是红色的,再点一次就变成白色了,如图:

    然后我们查找OPENCV_EXTRA_MODULES_PATH项,将OpenCV_Contrib-3.4.1的路径填进去,点击Configure,如图:

    这样OpenCV_Contrib-3.4.1就被添加进去了,然后我们修改关于Python的参数,在查找栏键入PYTHON:取消BIULD_opencv_python2,勾选INSTALL_PYTHON_EXMAPLES,这样就设置为编译Python3的版本了,再次点击Configure,如图:

    然后就可以生成编译文件了,点击Generate!
    然后退出CMake,进入build文件夹下,此处再次确认,swap分区修改为至少1.5GB,python3的虚拟环境已经激活!
    键入下述命令开始编译:
    make -j4建议开一个htop监视系统情况,如图:

    编译时间稍长,可以干点别的事情~
    这样就算是安装完成了,用时两个半小时,也是不容易啊,上图:

    用如下命令来安装~
    sudo make installsudo ldconfig最后一步,因编译后的库文件cv2.so被输出为cv2.cpython-35m-arm-linux-gnueabihf.so,这将导致该模块在Python3中无法import进来,
    我们到该库文件的安装目录/usr/local/lib/python3.5/site-packages/下,将其重命名为cv2.so:
    ls -l /usr/local/lib/python3.5/site-packages/cd /usr/local/lib/python3.5/site-packages/sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so<br>再返回Python3的虚拟环境目录下在对应的文件夹内建立一个链接,像这样:
    cd /home/pi/MyProjects/venv/lib/python3.5/site-packagesln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so这两步就解决了cv2模块无法导入的问题,详细情况建议参考英文原文,现在让我们尝试在Python3中导入模块并打印版本号:
    import cv2cv2.__version__

    版本3.4.1!完美!但是运行起来效果如何呢?既然实践是检验真理的唯一标准,那我们就来检验下吧~
    这里用到爱板官方微信的二维码,我们用OpenCV读取二维码图片文件,然后显示出来!Python代码如下:
    import numpy as npimport cv2img = cv2.imread('./eefocus.jpg')cv2.imshow('eefocus.jpg',img)cv2.waitKey(0)cv2.destroyAllWindows()直接上图,有图有真相!

    喝杯咖啡,今天就到这里吧!
    作者:Litthins

    日期:2018年7月1日
    回复

    使用道具 举报

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

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 00:44 , Processed in 0.116699 second(s), 18 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.