一窍不通的小白安装时遇到了很多问题,破防了很多次,写下这篇记录,希望帮助其他人少走弯路。
参考: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 3B4FE6ACC0B21F32sudo 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 计算机视觉库)