Ubuntu 20.04从源码编译安装普通和支持Cuda的OpenCV,并配置VSCode记录

一窍不通的小白安装时遇到了很多问题,破防了很多次,写下这篇记录,希望帮助其他人少走弯路。

参考:Computer Vision Lab的视频(他的主页 :yunus-temurlenk (Yunus Temurlenk) · GitHub

笔记---Linux安装OpenCV及VSCode的配置编译-腾讯云开发者社区-腾讯云

一、安装OpenCV

一、准备工作

主要是一些工具的下载安装和环境配置,在终端逐行执行

sudo apt -y remove x264 libx264-dev

//

sudo apt -y install build-essential checkinstall cmake pkg-config yasm

sudo apt -y install git gfortran

sudo apt -y install libjpeg8-dev libpng-dev

//

sudo apt -y install software-properties-common

//2025.2.20 修正

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

//

sudo apt -y update

//

sudo apt -y install libjasper1

sudo apt -y install libtiff-dev

//

sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev

sudo apt -y install libxine2-dev libv4l-dev

cd /usr/include/linux

sudo ln -s -f ../libv4l1-videodev.h videodev.h

cd "$cwd"

//

sudo apt -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

sudo apt -y install libgtk2.0-dev libtbb-dev qt5-default

sudo apt -y install libatlas-base-dev

sudo apt -y install libfaac-dev libmp3lame-dev libtheora-dev

sudo apt -y install libvorbis-dev libxvidcore-dev

sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev

sudo apt -y install libavresample-dev

sudo apt -y install x264 v4l-utils

//

可选依赖(我选择安装)

sudo apt -y install libprotobuf-dev protobuf-compiler

sudo apt -y install libgoogle-glog-dev libgflags-dev

sudo apt -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

sudo apt-get install ubuntu-restricted-extras

 注(2025.2.20):20.04系统崩了之后换了22.04,重装时又遇到问题了???执行

sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev

 时找不到包libdc1394-22-dev,查询后发现好像是因为版本不同包名变了,使用

apt-cache search libdc1394

命令查询可用的包,选一个装上(我选的是sudo apt -y install libdc1394-dev)

22.04存在一部分包名不一样,需要自行寻找!

二、获取OpenCV源码

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

进入opencv及opencv_contrib文件夹,切换到你想安装的版本(我这里是最新版4.11.0,截至2025.2.10)

cd opencv
git checkout 4.11.0 #将数字替换成想安装的版本,如4.8.0
cd ../opencv_contrib
git checkout 4.11.0  #将数字替换成想安装的版本,如4.8.0

三、编译,安装

cd ../opencv
mkdir build
cd build

进入到opencv目录下,新建build目录并进入

cmake下

普通版本(不支持Cuda):

cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D INSTALL_C_EXAMPLES=OFF \
          -D INSTALL_PYTHON_EXAMPLES=OFF \
          -D ENABLE_FAST_MATH=ON \
          -D BUILD_opencv_java=OFF \
          -D BUILD_ZLIB=ON \
          -D BUILD_TIFF=ON \
          -D WITH_GTK=ON \
          -D WITH_FFMPEG=ON \
          -D WITH_1394=ON \
          -D OPENCV_GENERATE_PKGCONFIG=ON \
          -D OPENCV_PC_FILE_NAME=opencv4.pc \
          -D OPENCV_ENABLE_NONFREE=ON \
          -D WITH_GSTREAMER=ON \
          -D WITH_V4L=ON \
          -D WITH_QT=ON \
          -D WITH_OPENGL=ON \
          -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
          -D BUILD_EXAMPLES=ON ..

支持Cuda(要先安装Cuda):

cmake -D CMAKE_BUILD_TYPE=RELEASE \
         -D CMAKE_INSTALL_PREFIX=/usr/local \
         -D INSTALL_C_EXAMPLES=OFF \
         -D INSTALL_PYTHON_EXAMPLES=OFF \
         -D WITH_TBB=ON \
	     -D WITH_CUDA=ON \
         -D ENABLE_FAST_MATH=ON \
         -D NVCUVID_FAST_MATH=ON \
         -D CUDA_FAST_MATH=ON \
         -D WITH_CUBLAS=ON \
         -D BUILD_opencv_java=OFF \
         -D BUILD_ZLIB=ON \
         -D BUILD_TIFF=ON \
         -D WITH_GTK=ON \
         -D WITH_NVCUVID=ON \
         -D WITH_FFMPEG=ON \
         -D WITH_1394=ON \
         -D BUILD_PROTOBUF=ON \
         -D OPENCV_GENERATE_PKGCONFIG=ON \
         -D OPENCV_PC_FILE_NAME=opencv4.pc \
         -D OPENCV_ENABLE_NONFREE=OFF \
         -D WITH_GSTREAMER=ON \
         -D WITH_V4L=ON \
         -D WITH_QT=ON \
         -D WITH_CUDNN=ON \
         -D BUILD_opencv_dnn=ON \
         -D OPENCV_DNN_CUDA=ON \
         -D WITH_OPENGL=ON \
         -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
         -D BUILD_EXAMPLES=ON ..

(两者后续步骤相同)

(如果直接copy到终端里出现命令分行不能执行的问题,可以复制到别的地方,然后把\删掉,变成一行指令再执行)

完成后准备进入漫长的编译环节......

nproc

查询cpu核数,确定make时最大的线程

make -j16  #将数字替换成你上一步得到的数字!!!!!!!
#不能超过!!!!!!

数字越大,编译越快,但不能超过!!!!!

编译过程中可能有warning,只要不报错(error),忽略即可。

sudo make install

 等待安装完毕即可

四、验证安装

pkg-config --modversion opencv4

显示版本号即安装成功

 二、配置OpenCV的include路径

创建软连接

sudo ln -s /usr/local/include/opencv4/opencv2/ /usr/include/

在opencv/build/unix-install/目录下找到opencv4.pc文件,在此目录下打开终端,将此文件复制到/usr/local/lib/pkgconfig目录下

sudo mv opencv4.pc /usr/local/lib/pkgconfig

重点看下includedir那一行

检测系统能否找到头文件

 pkg-config --cflags opencv4
 pkg-config --libs opencv4

在/etc/ld.so.conf.d的目录下找到opencv.conf文件,没有的话可以自己创建一个,写入

 /usr/local/lib

 注:遇到文件只读无法写入问题,可以先执行下面这条命令,修改文件权限,再写入

sudo chmod 777 opencv.conf 

执行生效命令

sudo ldconfig

找到/etc/bash.bashrc文件,在末尾添加

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

注:遇到只读问题解决方法同上,写入后执行下面这条命令就能改回只读

sudo chmod 444 bash.bashrc

最后执行更新命令

source /etc/bash.bashrc  
sudo updatedb

注:命令找不到的话,大概率是没安装mlocate,sudo apt install mlocate安装后再运行。

完成

三、VSCode配置

我采用的是cmake来构建项目,创建test目录并进入,创建build目录和main.cpp CMakeLists.txt,并在VSCode中打开

mkdir test
cd test
mkdir build
touch CMakeLists.txt main.cpp
code .

在test目录下随便放一张图片用来测试,最后目录如下

VSCode安装以下插件

main.cpp

#include <opencv2/opencv.hpp>

using namespace cv;

int main(){
    std::string image_path = "/home/homesickalien/test/GCC_CMake_Example_Tutorial.jpg";
    Mat img;
    imread(image_path,img);
    imshow("image",img);
    waitKey(0);

    return 0;
}

包含头文件时可能会报错,将鼠标悬浮在上面,点击快速修复,点击编辑includePath设置,包含路径中添加,保存。

/usr/local/include/**

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

project(test)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(test main.cpp)

target_link_libraries(test ${OpenCV_LIBS})

VSCode打开终端(Ctrl+Shift+~)

cmake ..
make
./test

可以愉快地学习啦!(附上OpenCV官网:OpenCV:OpenCV 教程 - OpenCV 计算机视觉库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值