玩客云(armv7hf)源码编译安装OpenCV
玩客云(armv7hf)源码编译安装OpenCV
最近手痒,从咸鱼买了个玩客云,这里记录一下折腾记录,同时电赛没有树莓派没有搞定的数字识别这里也一并研究一下
感谢来自此博主的帮助
一、下载源码
这里选择安装OpenCV基础包和Contrib两部分:OpenCV和OpenCV Contrib,分别点击去Github下载即可。 在各自的项目主页里点击”Releases”,如下。

选择想要的版本,下载Source Code即可。需要注意的是OpenCV和Contrib的代码版本要一致
二、配置代码目录
下载代码后,分别解压,将解压后的Contrib文件夹整体放入OpenCV的文件夹中,如下如

然后可以在OpenCV中新建一个文件夹,用来存放生成的文件。我这里建的是build文件夹
三、配置CMake
这一步我用的是CMake的GUI进行的。熟练的话也可以直接在终端中输入参数。在终端中输入
1 | cmake-gui |
即可打开CMake的GUI界面
在Where is the source code里选择OpenCV目录,在Where to build the binaries选择刚刚我们建立的build目录。 因为这里需要编译的是Contrib,因此还需要修改一些变量,如果普通安装的话那么这里不需要修改任何参数,直接Configure然后Generate就可以了。 需要修改的参数主要有以下几个:
如图进行配置

编译Contrib需要修改的参数变量
OPENCV_EXTRA_MODULES_PATH

这个参数指定的是额外模块的路径,指定了之后CMake就会自动寻找是否有额外模块。需要注意的是路径是contrib目录下的modules,例如/root/softwares/opencv-3.4.6/opencv_contrib-3.4.6/modules,而不能只写到/root/softwares/opencv-3.4.6/opencv_contrib-3.4.6,会提示找不到模块。
OPENCV_ENABLE_NONFREE

以上便是两个使用Contrib模块必须要修改的参数,其它没有特殊要求默认即可。配置好后,点击”Configure”按钮,CMake即开始配置,不出意外的话会会下载一些文件,这些文件都是外网的,还比较大,因此经常失败。
Configure环节下载文件失败解决
我在下载过程中没有遇到过,这里提供参考博文中给出的解决办法
思路为:
- 手动下载多次下载失败的文件,自行更改文件所在文件夹下的
CMakeLists.txt文件,将网络源地址更换为自己的本地文件地址 - 这里给出
face_landmark_model.dat文件的下载地址(备用地址)
使用方式


Configure和Generate
这样基本就不会再出问题了,点击Configure如下显示”Configuring done”。

再点击Generate就可以完成CMake配置了。
四、编译代码
在新建的build文件夹里打开终端,直接输入make就可以,至于用几个线程看你的电脑配置,我在玩客云上用三个线程make -j3,之前在树莓派上编译的时候只能用一个线程。 然后就是漫长的等待了,如下图。

这一步受编译环境的影响,可能会出现各种各样的问题。遇到问题多搜索,总会有和你一样问题的人。底部提供一些问题供参考,来自参考博文。
如果顺利到100%,恭喜,编译完成了。
五、安装代码
在完成make之后,直接make install即可将相关头文件拷贝到系统中去,之后就可以调用了。 make install以后,源文件不建议删除,因为如果以后还需要卸载的话,直接在build目录下打开终端输入make uninstall即可,否则的话只能手动删除目录文件了。
编译参考问题
1.GTK2和3版本不兼容
补充一下,在使用ROS调用OpenCV的时候有时候会报GTK2和3版本不兼容、不能同时使用的问题。这个问题其实也非常好解决,在CMake的时候,找到WITH_GTK_2_X,打勾,再重新编译安装OpenCV即可。更多可以参考这个网页。
六、参考资料
- [1]https://blog.csdn.net/u010739369/article/details/79966263
- [2]https://blog.csdn.net/CSDN330/article/details/86747867
- [3]https://www.cnblogs.com/needybeerlxy/p/8979238.html
- [4]https://blog.csdn.net/zxj_yantai/article/details/78779880
- [5]https://blog.csdn.net/u011361393/article/details/83210824
- [6]https://www.cnblogs.com/leoking01/p/8306935.html
- [7]http://zhaoxuhui.top/blog/2019/06/04/OpenCVContribEnvCPP.html

