ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Opencv-3.4.14 及 Opencv-contrib 交叉编译详细记录

2021-06-04 23:01:21  阅读:197  来源: 互联网

标签:CMAKE 14 编译 Opencv 3.4 文件夹 FILE OFFSET contrib


工具链

工具链是导师已经给好了,他直接给我了一个环境,让我在虚拟机里进行交叉编译。那么这一段就不详细叙述了。使用Vmware运行环境,下载opencv及contrib包,需要统一版本,然后将contrib解压到opencv文件夹中,并在其中建立build和install。

  • 需要注意的是,虚拟机的内存需要8G以上,4G肯定不够
  • 操作时最好一直使用root用户

cmake-gui

下载cmake-gui并打开,选择目录和build目录,点击configure,选第四个选项并继续,选择C和C++的交叉工具链,然后选择Targetroot,这个是输出文件夹。系统名称随便取就行。
在这里插入图片描述

  • 需要注意的是,TargetRoot并不一定与工具链路径一致,同时下面的三个选项需要设置正确,ProgramMode选择native

点击finish后,系统会对工具链进行测试(大概),如果选择错误有可能会出invalid错误。
接下来设置OpenCV编译的参数,一些参数的设置需要在界面上部勾选advance,其中需要进行设置的包括以下内容:

  • CMAKE_C_FLAGS,CMAKE_CXX_FLAGS 设置 -fPIC,这个非常重要,如果不加会出现recompile with -fPIC的错误
  • CMAKE_EXE_LINKER_FLAGS 设置 -lpthread -ldl -lrt,这个并不知道重不重要
  • OPENCV_ENABLE_NONFREE 勾选,勾选后即可编译contrib库
  • OPENCV_EXTRA_MODULES_PATH,这里记录的是contrib库modules文件夹的位置,不填写的话勾选上面的也没用
  • CMAKE_INSTALL_PREFIX,填写install文件夹的位置
  • 之后可以取消勾选一些不需要的内容,比如WITH_TIFF等

处理完毕后点击configure,确认下载全部完成后点击generate,cmake-gui部分完成。
由于contrib需要下载一些墙外的文件,这里直接把我下好的压缩包发过来,如果是3.4.14版本可以使用。
这部分是boostdesc部分:
链接: https://pan.baidu.com/s/1SWxvU6xuiA8Kg6GxuRlYuw 密码: gfmo
用超级用户删除原本contrib文件夹中的downloads/xfeatures2d文件夹,然后用cp复制过去。
之后还需要下载一个face_landmark的文件。这里提供一个名为share的压缩包,解压后直接放在build中即可。
链接: https://pan.baidu.com/s/1xixW6kc9-nzDbTI5H6sD8g 提取码: s8zb

编译

输入sudo make -j12 进行编译。编译过程中必然会出现问题,这里还要注意的是,文件名不能有括号,上面的文件名有括号所以编译不了。
大概在5%时,我们会遇到第一个错误,也就是common.cc报的错误"No suitable threading library available."
解决方式:搜索common.cc,在common.cc中#define HAVE_PTHREAD
在这里插入图片描述
之后我们make clean,在继续make -j12
遇到的第二个错误是&&没有右值,因为我这里改过的原因,没有报这个错,我只能大致说下怎么改。
解决方式:找到报错文件并打开,找到出错语句:

#if defined FILE_OFFSET && FILE_OFFSET == 64 //印象里是这样,忘了宏的名字 

这句话出错的原因是这个宏有可能没有定义值,也有可能定义了值。
通过以下方式检测其是否定义了值:

#if (FILE_OFFSET - FILE_OFFSET - 1 != -1) //判断是否有值
#if (FILE_OFFSET == 64)
//此处填写中间行
#endif
#endif

之后如果遇到"recompile with -fPIC" 提示,说明CMAKE 的 FLAG没有添加-fPIC,在cmake-gui添加即可。
如果遇到工具链突然kill了自己,那就是因为内存不足,需要多分配虚拟内存。
那么我这个就是一马平川的编译完了,之后sudo make install即可。

如果有帮助点个赞可好

标签:CMAKE,14,编译,Opencv,3.4,文件夹,FILE,OFFSET,contrib
来源: https://blog.csdn.net/qiao123aaa/article/details/117556014

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有