如要用windows的msvc编译opencv,参考我另外一篇文章
windows编译opencv、opencv-python、opencv_contrib、cuda-CSDN博客。
如要用windows的mingw编译opencv,参考我另外一篇文章
https://blog.csdn.net/weixin_44733606/article/details/135741806
一、安装准备
1、安装依赖
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
安装python,这里是3.10,可改命令后缀更换版本
sudo apt-get install python3.10
安装pip
sudo apt install python3-pip
安装numpy
pip install numpy
安装tbb,jpeg,png,tiff
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
2、下载opencv源码,我选4.5.5
https://opencv.org/releases/
下载opencv_contrib https://github.com/opencv/opencv_contrib
二、编译
1、进入opencv文件夹
cd opencv-4.5.5
mkdir build
cd build
2、接下来cmake步骤,可能下载失败看我另一篇文章https://blog.csdn.net/weixin_44733606/article/details/131721057
(1)、不编译opencv_contrib、cuda
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=True ..
注解:
1. CMAKE_INSTALL_PREFIX 是opencv的安装地址 默认安装在 usr/local
2. CMAKE_BUILD_TYPE 是opencv安装的版本,Release和Debug两种可选,默认安装Release
3. OPENCV_ENABLE_NONFREE 是否使用部分被申请了专利的算方法 这里选True的话就可以使用了
4. OPENCV_GENERATE_PKGCONFIG 强烈建议开启这个 设置为ON OPENCV_GENERATE_PKGCONFIG 因为opencv4默认不生成.pc文件,所以加上这句用于生成opencv4.pc文件,支持pkg-config功能。opencv4版本及以上 这里用ON。
(2)、编译opencv_contrib,不编译cuda
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
-D HAVE_opencv_python3=ON \
-D PYTHON_EXECUTABLE=usr/bin/python3 \
-D BUILD_EXAMPLES=ON ..
(3)、编译opencv_contrib、cuda
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_GENERATE_PKGCONFIG=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=7.5 \
-D WITH_CUBLAS=1 \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
-D HAVE_opencv_python3=ON \
-D PYTHON_EXECUTABLE=usr/bin/python3 \
-D BUILD_EXAMPLES=ON ..
从上,WITH_CUDA和WITH_CUDNN项指的是用CUDA和cuDNN。OPENCV_DNN_CUDA项表示我们要编译后的dnn模块支持CUDA。ENABLE_FAST_MATH, CUDA_FAST_MATH和WITH_CUBLAS项是为了优化运算而开启的。
CUDA_ARCH_BIN项的GPU框架版本号很重要,看我另一篇文章查询方法
https://blog.csdn.net/weixin_44733606/article/details/131721081
,因为如果这个值填错,使用dnn模块时可能会出现以下问题:
cv2.error: OpenCV(4.5.5) /home/waltpeter/opencv/modules/dnn/src/cuda/execution.hpp:52: error: (-217:Gpu API call) invalid device function in function 'make_policy'
3、cmake结束后make
注:终端输入nproc
命令可以查看自己电脑有多少线程。我的电脑有8个。
sudo make -j8
4、安装
sudo make install
三、环境配置
1、修改etc/bash.bashrc
我们之前安装的时候 OPENCV_GENERATE_PKGCONFIG=ON
所以在/usr/local/lib/pkgconfig下生成了opencv4.pc文件,里面记录了OpenCV头文件、库文件的路經。需要进行如下配置:
sudo nano /etc/bash.bashrc
文件末尾添加以下内容并保存
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
2、修改动态库
sudo nano /etc/ld.so.conf.d/opencv.conf
文件末尾添加以下内容 并保存
/usr/local/lib
更新
sudo ldconfig
三、检查安装情况
查看版本号
pkg-config --modversion opencv4
查看libs库
pkg-config --libs opencv4