opencv+contrib编译

opencv+contrib编译问题小结(Ubuntu)

今天又安装了opencv+contrib,遇到了一些问题,进行记录。

基本流程就是:
cmake …
make
make install

1、使用cmake-gui和cmake

使用cmake-gui编译时,设置install的路径:不能设置为:../install,必须为绝对路径,否则会报错
但是直接使用cmake就可以设置为:../install

有点担心使用绝对路径cmake之后库的迁移问题,我就使用了cmake。

命令如下:

cmake 
-D CMAKE_INSTALL_PREFIX=../install -DOPENCV_EXTRA_MODULES_PATH=/home/wys/pkg/opencv3.2/opencv_contrib-3.2.0/modules -DENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=Release -DEIGEN_INCLUDE_PATH=/usr/include/eigen3 ..
2、相对路径安装
-D CMAKE_INSTALL_PREFIX=../install 

设置安装的install路径为相对路径

3、gflag问题

make时遇到了这个问题,这是随便找来的类似问题示例。

/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:415: recipe for target 'lib/libopencv_videoio.so.4.1.2' failed
make[2]: *** [lib/libopencv_videoio.so.4.1.2] Error 1
CMakeFiles/Makefile2:3689: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

我的是:

opencv relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC

然后还提示了gflag的报错。因为已经安装了gflag,但是没有使用动态链接库进行编译,是静态库编译的,所以需要重新编译gflag,加上-fPIC参数,完成动态链接库的编译,再安装。

gflag的CMakeLists.txt中加入:

add_compile_options(-fPIC)

并且

cmake -fPIC ..

(这里还不是很懂)

然后再继续编译opencv,直接再make就可以,不用全部cmake,make再重来。

4、eigen的问题

已经按了eigen,/usr/local/还加上了symlink,所以报错。

删除symlink,再加入:

-DEIGEN_INCLUDE_PATH=/usr/include/eigen3
5、总结:

1、多在GitHub的opencv和opencv_contrib的issue上查查,基本都能解决

2、编译最好挂梯子


我是分割线


在将Ubuntu18升级到Ubuntu20之后,又重新编译了opencv3.2,遇到了新的问题
1、
首先是找不到python2的库
报错

cv2.cpp:6:10: fatal error: Python.h: No such file or dire
sudo apt-get install python2-dev

在/usr/include/python2.7,中,文件夹很空,所以报错
安装Python2之后
可以看到很多头文件,问题也解决
参考
https://www.cnblogs.com/tlz888/p/9691548.html

2、指定python的路径

cmake -D CMAKE_INSTALL_PREFIX=../install -D OPENCV_EXTRA_MODULES_PATH=/home/tonglu/pkg/opencv3.2/opencv_contrib-3.2.0/modules -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=Release -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 -D OPENCV_PYTHON3_VERSION=3.8 -D PYTHON3_INCLUDE_PATH=/usr/include/python3.8 -D PYTHON3_EXECUTABLE=/usr/bin/python3.8 -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages ..

增加了对于Python3的路径等指定

3、opencv编译报错

make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:56: modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:21149: modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
make: *** [Makefile:138: all] Error 2
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:339: modules/python3/CMakeFil

解决方案:
https://blog.csdn.net/qq_44357371/article/details/105966714

4、ubuntu(linux)下安装openCV(ffmpeg导致的编译不通过的解决办法)

ncv-3.2.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1541:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not

参考
https://www.pianshen.com/article/8612586/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值