ubuntu20.04手动编译opencv 4.9.0遇到的问题汇总

ubuntu20.04手动编译opencv 4.9.0遇到的问题汇总

编译流程

以4.9.0版本为例,可参考:

  • https://docs.opencv.org/4.9.0/d2/de6/tutorial_py_setup_in_ubuntu.html
  • https://linuxize.com/post/how-to-install-opencv-on-ubuntu-20-04/
  • https://blog.youkuaiyun.com/weixin_44003563/article/details/90404745
  • https://www.mintimate.cn/2021/11/07/installOpenCV/#%E5%AF%BC%E5%85%A5Python
  • https://blog.youkuaiyun.com/qq_25005909/article/details/78554469(主要参考)
  • opencv联合编译ffmpeg_opencv ffmpeg编译-优快云博客

分享下我的命令:

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

cd opencv
mkdir build
cd build


sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D  CMAKE_INSTALL_PREFIX=/usr/local/opencv -D CUDA_GENERATION=Auto OPENCV_EXTRA_MODULES_PATH=/home/user/yuanjinmin/opencv_contrib/modules/ -D BUILD_opencv_python3=ON -D PYTHON_DEFAULT_EXECUTABLE=/home/user/anaconda3/envs/yjm_slowfast/bin/python3.9  -D PYTHON3_LIBRARIES=/home/user/anaconda3/lib/libpython3.9.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/user/anaconda3/envs/yjm_slowfast/lib/python3.9/site-packages/numpy/core/include -D PYTHON3_EXECUTABLE=/home/user/anaconda3/envs/yjm_slowfast/bin/python3.9 -D WITH_FFMPEG=ON ..

sudo make -j8 # 结合自己服务器线程

sudo make install

sudo ldconfig

export PYTHONPATH="$PYTHONPATH:/usr/local/opencv/lib/python3.9/site-packages" # 好像可以手动将其中的cv2复制到对应虚拟环境中的`site-packages`文件夹,也可以使用

python3 -c "import cv2; print(cv2.__version__)"

编译加速

https://blog.youkuaiyun.com/tfb760/article/details/104030841

ippicv_2021.10.0_lnx_intel64_20230919_general.tgz下载慢

可参考:https://blog.youkuaiyun.com/orDream/article/details/84311697

face_landmark_model.dat下载

可参考:https://blog.youkuaiyun.com/pzb19841116/article/details/115519158#comments_32285782

ubuntu20.04下编译opencv4.9.0时报错

/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to ffi_type_uint32@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to ffi_type_sint32@LIBFFI_BASE_7.0’
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to ffi_type_pointer@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to ffi_type_void@LIBFFI_BASE_7.0’
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to ffi_prep_cif@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to ffi_call@LIBFFI_BASE_7.0’

可参考:https://blog.youkuaiyun.com/special00/article/details/135100639
2.

Cannot generate a safe runtime search path for target opencv_imgcodecs
because files in some directories may conflict with libraries in implicit

参考:https://blog.youkuaiyun.com/cunyizhang/article/details/124968204

ImportError:libgobject-2.0.so.0: undefined symbol: ffi_type_uint32, version

使用export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7之后在此窗口运行python项目可以解决(每个新命令行中都要设置,除非放入.bashrc中,或在IDE中配置路径)

The imported target “openjp2_static” references the file “/usr/lib/x86_64-linux-gnu/libopenjp2.a” but this file does not exist. Possible reasons include: …

报类似于https://github.com/opencv/opencv/issues/18090这样的错误,不用管

fatal error: numpy/ndarrayobject.h: No such file or directory · Issue #11709 · opencv/opencv (github.com)

pip install numpy

忘记装numpy了

ffmpeg支持

  1. 使用ffmpeg -version查看是否安装ffmpeg;
  2. 在编译opencv时加入-D WITH_FFMPEG=ON 的cmake参数
  3. 执行cmake命令后可以查看,也可以安装pip库后查看

VideoCapture can’t open RTSP stream [FIXED] - Python - OpenCV

在这里插入图片描述

gstreamer支持

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
  • 正确示范
    在这里插入图片描述
  • 错误示范
    在这里插入图片描述

Todo(未验证)

gpu加速

命令
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

cd opencv
mkdir build
cd build


sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv \
-D CUDA_GENERATION=Auto \
-D OPENCV_EXTRA_MODULES_PATH=/home/user/yuanjinmin/opencv_contrib/modules/ \
-D BUILD_opencv_python3=ON \
-D PYTHON_DEFAULT_EXECUTABLE=/home/user/anaconda3/envs/yjm_CAIP/bin/python3.9  \
-D PYTHON3_LIBRARIES=/home/user/anaconda3/lib/libpython3.9.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/user/anaconda3/envs/yjm_CAIP/lib/python3.9/site-packages/numpy/core/include \
-D HAVE_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=/home/user/anaconda3/envs/yjm_CAIP/bin/python3.9 \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D CUDA_ARCH_BIN=8.6 \
-D WITH_CUBLAS=1 \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_world=ON \
-D BUILD_CUDA_STUBS=ON \
-D WITH_FFMPEG=ON ..

sudo make -j8 # 结合自己服务器线程

sudo make install

sudo ldconfig

export PYTHONPATH="$PYTHONPATH:/usr/local/opencv/lib/python3.9/site-packages" # 好像可以手动将其中的cv2复制到对应虚拟环境中的`site-packages`文件夹,也可以使用

python3 -c "import cv2; print(cv2.getBuildInformation())"
说明
  1. opencv 4.9.0好像不支持cuDNN 9.0以上的版本:Built target opencv_cudafilters make error · Issue #25929 · opencv/opencv。但我好像用opencv 4.11.0还是会报错:CUDA backend requires cuDNN.
参考
  1. 编译带 CUDA 模块的 OpenCV | 个人笔记
  2. 安装支持cuda的OpenCV过程记录_c++ opencv安装的时候如何带上显卡-优快云博客
  3. 【小白用】在Ubuntu上安装OpenCV任何版本+Contrib库+CUDA兼容
### 安装环境准备 为了在 Ubuntu 20.04 上成功配置并安装 OpenCV 4.9,需先更新系统软件包列表,并安装必要的构建工具和依赖项。这可以通过执行以下命令来完成: ```bash sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git pkg-config \ libavcodec-dev libavformat-dev libswscale-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \ libjpeg-dev libpng-dev libtiff-dev \ libopenexr-dev libwebp-dev \ libdc1394-22-dev libeigen3-dev \ libtheora-dev libvorbis-dev libxvidcore-dev \ libx264-dev libgtk-3-dev \ libatlas-base-dev gfortran \ python3-dev python3-numpy \ ffmpeg ``` 上述命令涵盖了从图像处理到视频编码解码所需的库文件以及 Python 开发环境的支持[^3]。 ### 下载 OpenCVopencv_contrib 源代码 接着,下载指定版本的 OpenCV 及其扩展模块 `opencv_contrib` 的源代码压缩包至本地计算机中。这里以 OpenCV 版本号为 4.9.0 为例说明操作过程: ```bash cd ~ git clone https://github.com/opencv/opencv.git -b 4.9.0 --depth=1 git clone https://github.com/opencv/opencv_contrib.git -b 4.9.0 --depth=1 ``` 此部分确保获取到了特定版本的稳定版源码用于后续编译工作[^4]。 ### 编译与安装 创建一个新的目录作为 CMake 构建输出路径,并进入该目录内运行 CMake 配置脚本来设定编译选项;之后再调用 Make 工具链来进行实际编译链接直至最终安装入系统环境中去。 ```bash mkdir ~/opencv/build && cd ~/opencv/build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON .. make -j$(nproc) sudo make install ``` 通过以上设置可以启用额外的功能模块支持(如 SIFT, SURF 等),并且允许编译示例程序以便于学习测试之用[^5]。 ### 验证安装成果 最后一步是验证新安装好的 OpenCV 是否能够正常运作。可以在终端里启动 Python 解释器尝试导入 cv2 库来看看是否有任何错误提示信息出现。 ```python import cv2 print(cv2.__version__) ``` 如果一切顺利的话,则会显示所期望看到的目标版本字符串表示形式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深|码|洞|悉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值