树莓派做图像项目,没opencv怎么行呢?看了多个帖子,找了两个比较靠谱的作为参考,经过一系列摸索,终于在树莓派上配置了最新的opencv4.1.0版本(2019/05/17,刚发行一个月,搜遍全网,这个可能是第一篇配4.1.0的帖子[/哈][/哈])。
配置过程,仍然没有保存图片,可以参考我提供的链接的图片,过程结果都是一样的。
但以下步骤为实时记录,可以作为指南参考。
【配置完毕后的思考】,这个可以先看看,配置时迷惑焦虑可能就少了一半。
有些东西可能是按照一篇文章就完全搞定了,有的即便感觉和别人情况一模一样还是无法按照别人步骤完成,这都是有可能的。实际上大家写的指南有时候可能自己也是碰巧从迷宫中多条道路上碰出了一条通路,可以参考,但也不是唯一。除非证明只有一条坦途别无他路,所有还没论证过的指南都是参考。贵在不迷信、能实事求是、理解、融汇、前进,而且即便按照一篇指南错误,也没必要完全返回原始状态,而是要再参考别的结合自己实际再摸索前行。本篇参考就是参考、摸索成功而得。
该Opencv配置主要同时参考两篇文章https://www.jianshu.com/p/56929416b4a1和http://www.cirmall.com/bbs/thread-106181-1-1.html。
参考第一篇文章【在树莓派安装运行在Python3上的OpenCV】该文章中的前3个部分,完成本文下列1-6步骤(其中第6步失败,参考第二篇文章继续直至完成),建议先通读全文,知道可能出现的问题在哪里,再逐步按本文正确的进行操作。
cd /home/pi/Downloads
unzip opencv-4.1.0.zip
unzip opencv_contrib-4.1.0.zip
在本Downloads文件夹新建build文件夹,以下编译命令都是在build文件夹下进行。
第一篇文章的命令行cmake失败,于是开始参考第二篇文章,这篇文章的cmake-gui编译部分也来自于其姊妹篇http://www.cirmall.com/bbs/thread-106181-1-1.html,这两篇文章有个虚拟环境设置和第一篇的扩大到整个SD卡应该是一个目的,因此不再虚拟环境。编译部分具体如下(以下是本人整合过的无误的,也可以自己同时参考这两个姊妹篇进行编译):
安装gui,命令sudo apt-get install cmake-qt-gui,命令cmake-gui打开gui -> 添加路径 -> 点击左下角configure(如果要选编译器就选默认)->结束后找到OPENCV_EXTRA_MODULES_PATH项,将OpenCV_Contrib-4.1.0的路径填进去,再点击Configure -> Done,再修改python三个参数,取消BIULD_opencv_python2,勾选INSTALL_PYTHON_EXMAPLES,勾选OPENCV_PYTHON3_VERSION,点generate,等待done。
最后,命令行,进到build文件夹,make -j4 编译(调用多个线程进行编译,-j 后边的参数就是使用的线程数量),时长约六小时,在67%处几乎停止。
最后编译到71%,失败退出,没理会,继续sudo make install,可以再开个终端htop看cpu内存情况,又三四个小时,99%时swap占满12小时等待无果,断电重启。遂放弃第一篇方法,开始按照第二篇增大swap方法继续安装。具体如下:
①、增大swap,详见http://www.cirmall.com/bbs/thread-99451-1-1.html,如果对代码文字不清楚,可以参考图片,十分详细。继续编译。
②、前边过程已经按照第一篇执行,现在编译即可,命令sudo make install,由于99%都built,因此很快编译完毕。命令installsudo ldconfig。结束,命令python3,导入import cv2,opencv版本cv2.__version__,结果显示错误无cv2模块。在第二篇中作者说道了这个情况,并给出了解释及解决方案,见下。
③、编译后的库文件cv2.so被输出为cv2.cpython-35m-arm-linux-gnueabihf.so【我的在/usr/local/lib/python3.5/dist-packages/cv2/python-3.5/文件夹下,原作者的在/usr/local/lib/python3.5】导致该模块在Python3中无法import进来的问题,因此,只需要在这个文件夹下再copy一个重命名为cv2.so即可。
④、我的树莓派中,具体在/usr/local/lib/python3.5/dist-packages/cv2/python-3.5 中,因此要灵活变通,切换具体路径代码如下:
pi@raspberrypi:/usr/local/lib/python3.5/dist-packages/cv2/python-3.5 $ sudo cp cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so,import会直接寻找到新命名的。OK。
python3
import cv2
cv2.__version__
结果显示4.1.0 。
步骤全部结束。一定要记得,上述这整个过程是要先后参考两篇文章的哦。
结束。
补充:上述的操作结果是成功的,如果照搬的话,我敢确保你也可以成功。但如果作为配置指南,只靠上述文字,可能还是艰涩不够格的、而且迂回。因此,如果非要推荐个图文并茂的指南的话,只推荐第二篇文章:即电路城论坛中的http://www.cirmall.com/bbs/thread-106181-1-1.html,毕竟他3.4、4.0都成功了,而且也给出了错误的解决方法,比较完整,参考价值大。
如果有疑问opencv版本不同的,也请打消疑虑,大胆参考,大胆配置,毕竟我这个树莓派配置刚发行一个月的opencv 4.1.0都成功了[哈哈][哈哈]。