这几天做一个项目,初步打算在树莓派上实现人脸识别,在配环境的过程中踩坑无数,特此记录一下。
前提:wsl-ubuntu18.04,树莓派3B+搭载unbuntumate18.04
- 首先,为什么要交叉编译呢。其实一开始没打算交叉编译,想着直接在树莓派上装好opencv,但在make的时候太慢,感觉要花一天时间才能make完,同时考虑到之后编译项目代码的时候也可能很卡,所以选择交叉编译。
- 交叉编译的主体过程主要参见这篇博客,大体操作一致。
- 接下来就开始配置了
- 首先是下载工具链,要根据自己的实际情况选择,我一开始直接按教程的选择,白忙了好几个小时,最后我选的是aach64-linux-gnu,下载页面
。(建议选择深夜凌晨下载) - 选好后要下三个包,下完之后把三个包解压合并了。
- 到这一步工具链就ok了
- 然后下载opencv和opencv-contrib包,使用wget下载选用版本,我这里选的是4.1.2,然后安装依赖项(依赖这一步不清楚是不是必须)参见-直接安装opencv教程
- 然后在opencv-4.1.2目录下mkdir release,mkdir install
- cd release,进入cmake-gui进行配置,好了,从这一步开始问题就变多了。
- 配置参数处注意:在最开始选择不同的工具链这里要配置的参数有的是不一样的,所以可以先按教程配置,后边make的时候若出现问题,再搜索解决。
- 配好参数后修改CMakeCache.txt文件,然后sudo make -j8
- 常见问题如下:
- 小提示一下,碰到的recipe for target错误都是结果,问题的具体情况在错误的前面找,还有就是有的时候可以等一下再重新make一次就解决到错误了。
- 最后sudo make install搞定pc机上的任务。
- 这里搞定之后在install目录里有.so文件,这里可以提前file ……so 一下,看看是不是64bit aarch64的,如果和树莓派的配置不一样,则需要重新选择工具链了。
- 首先是下载工具链,要根据自己的实际情况选择,我一开始直接按教程的选择,白忙了好几个小时,最后我选的是aach64-linux-gnu,下载页面
- 接下来就该操作树莓派了,参见
- 我这里传文件用的是mobaxterm,简单方便一点。
- 把install目录下的lib和include合并成一个文件夹opencv4传到树莓派/opt下,修改动态链接库路径设置。
- 再之后就该拿实例测试了,下一篇博客写实例测试。