1.下载源码
2.编译
- 路径切入源码目录
- 执行命令:
注意:cmake -DOPENCV_GENERATE_PKGCONFIG=YES - DCMAKE_INSTALL_PREFIX=/home/lx/opencv/install .. make make install- 1).
-DOPENCV_GENERATE_PKGCONFIG=YES选项是编译生成opencv4.pc这个文件用于pkg-config程序管理已安装库的头文件和库文件,编译结束opencv4.pc文件一般在opencv/install/lib/pkgconfig/opencv4.pc目录; - 2).
DCMAKE_INSTALL_PREFIX指定make install时的安装目录。
- 1).
3.使用pkg-config
- 1.安装
sudo apt install pkg-config
- 2.设置环境变量
PKG_CONFIG_PATH
export
PKG_CONFIG_PATH=/home/lx/sw/opencv/install/lib/pkgconfig:$PKG_CONFIG_PATH
- 3.查看头文件和库文件目录
# *.so directories
pkg-config --libs opencv4
# *.h directories
pkg-config --cflags opencv4
- 4.查看
OpenCV版本
pkg-config --modversion opencv4
4.使用CMAKE和GCC编译OpenCV程序
- 1).
CMakeList.txt文件cmake_minimum_required(VERSION 2.8) project( DisplayImage ) find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} )find_package有Module和Config两种模式,Module模式,cmake需要在cmake安装目录下的share/cmake-<version>/Modules目录和CMAKE_MODULE_PATH目录查找Find<LibraryName>.cmake,这个文件负责找到库所在的路径。若Module模式搜索失败,会启用Config模式,通过<LibraryName>Config.cmake或<lower-case-package-name>-config.cmake这两个文件来引入我们需要的库。对于原生支持Cmake编译和安装的库通常会安装Config模式的配置文件到对应目录,这个配置文件直接配置了头文件库文件的路径以及各种cmake变量供find_package使用。对于OpenCV在opencv/build目录下,可以看到OpenCVConfig.cmake文件。 - 2).若
find_package找不到安装的opencv
可通过set(OpenCV_DIR /path)来指定。set(OpenCV_DIR /home/lx/rob/opencv-3.4.10/build) find_package( OpenCV 3 REQUIRED ) INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
5.使OpenCV支持Nvidia GPU
前提,安装显卡驱动和cudatoolkit及cudnn模块
在Nvidia网站查找显卡算力,设置CUDA_ARCH_BIN的值

https://developer.nvidia.com/cuda-gpus
如果CUDA_ARCH_BIN参数设置有误,OpenCV可以编译通过,但使用DNN推理时会报错
File "ssd_object_detection.py", line 74, in
detections = net.forward()
cv2.error: OpenCV(4.2.0) /home/a_rosebrock/opencv/modules/dnn/src/cuda/execution.hpp:52: error: (-217:Gpu API call) invalid device function in function 'make_policy'
- 设置CMake的参数
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-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=7.0 \
-D WITH_CUBLAS=1 \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D HAVE_opencv_python3=ON \
-D PYTHON_EXECUTABLE=~/.virtualenvs/opencv_cuda/bin/python \
-D BUILD_TIFF=ON \
-D BUILD_EXAMPLES=ON ..
常见问题
- 0. 编译C++时报错
/usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `_TIFFmalloc@LIBTIFF_4.0'OpenCV需要使用libtiff4,ubuntu上已经舍弃,取而代之的是libtiff5-dev,所以解决这个问题的方式有两个:- 0)
sudo apt-get install libtiff5-dev - 1)
cmake指令后跟-DBUILD_TIFF=ON以在编译OpenCV时同时编译libtiff4
在ubuntu20.04编译OpenCV 4.4.0时验证可行。
- 0)
- 1. error while loading shared libraries
libopencv_highgui.so.4.4: cannot open shared object file: No such file or directory
解决方法:set LD_LIBRARY_ATH as pkg-config --libs opencv4 export LD_LIBRARY_ATH="/home/lx/sw/opencv/install/lib:$LD_LIBRARY_ATH" sudo ldconfig
参考:
1.https://zhuanlan.zhihu.com/p/97369704
2.https://docs.opencv.org/4.5.4/d7/d9f/tutorial_linux_install.html
本文详细指导如何从官网下载并编译OpenCV源码,包括配置CUDA和CUDNN支持,解决编译过程中可能遇到的问题,如依赖库冲突和GPU设置。还介绍了如何使用pkg-config管理库和版本确认,以及CMake与GCC的配合应用。
901

被折叠的 条评论
为什么被折叠?



