在Ubuntu16.04上编译opencv4.1.0-gpu带contrib版本碰到的问题

1.未定义的引用

具体的错误如下(没有截图):

对‘__cxa_init_primary_exception@CXXABI_1.3.11’未定义的引用

对‘std::__exception_ptr::exception_ptr::exception_ptr(void*)@CXXABI_1.3.11’未定义的引用

这个问题主要是在cmake时参数选择了如下这个,从查阅的资料来看,它指的是高性能并行的Intel tbb。起初我在AMD的CPU上带该参数进行编译,出现如上所示的错误。以为只能是Intel的CPU能用。随后我在i7-9700F上带该参数进行编译,还是出现该错误。不管是AMD还是Intel的CPU只要不带该参数,就不会出现上述错误。目前还不知道导致该问题的深层原因。

-D WITH_TBB=ON

2.没有那个文件或目录

具体出现错误的提示如下:

fatal error: boostdesc_bgm.i: 没有那个文件或目录

以这个为搜索,可以发现这个问题好多人都出现过。网络问题,主要是以下几个文件没有下载到:

  1. boostdesc_bgm.i
  2. boostdesc_bgm_bi.i
  3. boostdesc_bgm_hd.i
  4. boostdesc_lbgm.i
  5. boostdesc_binboost_064.i
  6. boostdesc_binboost_128.i
  7. boostdesc_binboost_256.i
  8. vgg_generated_120.i
  9. vgg_generated_64.i
  10. vgg_generated_80.i
  11. vgg_generated_48.i

下载地址在自己建的编译文件内。比如我建立的编译文件夹是build,所以路径是:build/CMakeDownloadLog.txt。在这个文件中就包含下载地址。可能需要vpn呀。这里有人上传到百度云上了,我弄好了才发现[哭]。将下载的文件放到opencv_contrib/modules/xfeatures2d/src/ 路径下重新make。

3.缺少依赖库

这个错误具体如下:

fatal error: GL/gl.h: 没有那个文件或目录

如果你按照这篇博客编译,就不会碰到这个问题。主要是缺少OpenGL依赖库。安装命令如下:

sudo apt-get install mesa-common-dev
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

4.编译时头文件不对

4.1 第一个

具体错误如下:

fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录

头文件include地址不对,解决方法如下:

将opencv-4.1.0/modules/features2d/test/文件下的

test_descriptors_regression.impl.hpp
test_detectors_regression.impl.hpp
test/test_detectors_invariance.impl.hpp
test_descriptors_invariance.impl.hpp
test_invariance_utils.hpp

拷贝到opencv_contrib-4.1.0/modules/xfeatures2d/test/文件下。

同时,将opencv_contrib-4.1.0/modules/xfeatures2d/test/test_features2d.cpp文件下的

#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"

改成:

#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"

将opencv_contrib-4.1.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp文件下的

#include "features2d/test/test_detectors_invariance.impl.hpp" 
#include "features2d/test/test_descriptors_invariance.impl.hpp"

改成:

#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"

4.2 第二个

具体错误如下:

fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录

这个问题跟4.1好像,所以开始我也和上面的操作一样,虽然没有报同样的错误,但是出现了很多的未定义引用的错误。所以就这个方法失效了。在我仔细查看具体错误时发现这个错误出现在make的99%处(差一点点就成功了);同时,编译的文件是XXX_example文件中,所以我从头cmake,不选如下这个参数。

-D BUILD_EXAMPLES=ON

 5.缺省qt库文件

具体错误如下:

开头是警告:/usr/bin/ld: warning: libicui18n.so.58, needed by //hom/hw/anaconda3/lib/libQt5Core.so.5

结尾是:Makefile:160: recipe for target 'all' failed

解决方法是在终端搜寻一下该文件的具体位置,输入:

find /home -name "libicui18n.so.58" 

一般会显示/hom/username/anaconda3/lib/libicui18n.so.58(其实我仔细看了一下,上面的地址中有两个反斜杠,所以找不到该文件)。然后终端输入:

sudo gedit /etc/profile

将显示的地址输入到打开文件的最后一行。比我的用户名是weiz,则输入如下内容:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/weiz/anaconda3/lib
发布了83 篇原创文章 · 获赞 130 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_31112205/article/details/105210496
今日推荐