OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了许多常用的图像处理和计算机视觉算法。本文将介绍如何在Linux(Ubuntu)和Windows系统下安装C++版本的OpenCV,并提供验证测试的方法。
OpenCV是一个跨平台的计算机视觉库,它可以用于开发实时的图像处理和计算机视觉应用。OpenCV的主要功能包括:图像处理、特征检测、物体识别、人脸识别等。OpenCV支持多种编程语言,如C++、Python、Java等。
OpenCV - Open Computer Vision Library
Get Started - OpenCV
在安装OpenCV之前,首先需要更新系统的软件包列表。在终端中输入以下命令:
sudo apt-get update
sudo apt install -y cmake
sudo apt install -y build-essential
sudo uname -a
sudo apt-cache madison libopencv-dev
sudo apt install -y libopencv-dev
安装成功,下面是安装的相关路径:
include目录: /usr/include/opencv4/
lib目录:/usr/lib/x86_64-linux-gnu/
其中“*.a”的文件为库文件,“*.so”文件为动态连接库。
bin目录文件:/usr/bin
这种安装方式会自动安装opencv依赖的第三方库,但是无法安装比较新的版本,比如4.8.0
sudo apt install -y libopencv-dev=4.8.0
最简单的方式是:
whereis opencv_version
opencv_version
或者
安装完成后,可以通过编写一个简单的程序来验证OpenCV是否安装成功。创建一个名为test_opencv.cpp
的C++文件,内容如下:
#include
#include
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
在终端中运行这个程序:
g++ test_opencv.cpp -o test_opencv `pkg-config --cflags --libs opencv4`
./test_opencv
OpenCV: Installation in Linux
sudo apt install -y cmake g++ wget unzip
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.8.0.zip
unzip opencv.zip
mkdir -p build && cd build
设置安装目录为用户目录的 opencv4.8.0_install子目录。
cmake ../opencv-4.8.0 -DCMAKE_INSTALL_PREFIX=~/opencv4.8.0_install
cmake --build .
备注:如果整个过程没有报错了,说明没有安装成功。
sudo make install
注意:这个默认会在操作系统级别更新opencv的版本,一般情况下,我们采用CMake来进行项目构建,通过CMake项目来设置对新构建的opencv版本依赖关系,这样方便我们维护项目之间的opencv版本相互独立。
直接运行构建出来的bin文件:
或者通过CMake项目+CPP代码来进行测试:
在用户目录下创建“cmake_opencv_demo”,在该目录下创建“CMakeLists.txt”:
cmake_minimum_required(VERSION 3.15)
project(opencv_demo LANGUAGES CXX C)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(OpenCV_DIR ~/build/)
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")
add_executable(opencv_demo main.cpp)
target_include_directories(opencv_demo PRIVATE ${OpenCV_INCLUDE_DIRS})
target_link_libraries(opencv_demo ${OpenCV_LIBS})
和 “main.cpp”:
#include
#include
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
进入“cmake_opencv_demo”,通过“cmake -S . -B build”构建c++项目:
通过“cmake --build build”目录生成可执行文件:
运行可执行文件:
进入Release OpenCV 4.8.0 · opencv/opencv · GitHub
下载完,直接解压到的“D:\opencv\opencv4.8.0”即可:
sources: 为源代码目录。
build:基于vs 2019构建的版本。
include:包含相关头文件。
x64:使用vs 2019 构建的x64的Debug和Release版本。
bin:windows下相关exe工具,以及包含所有模块的动态库(dll), 带'd'为Debug版本。
安装CMake,可以参考
[CMake] 基础教程 - CMake安装和验证测试(Windows)
源代码目录设置“D:/opencv/opencv4.8.0/sources”,构建目录设置为“D:/opencv/opencv4.8.0/sources/build”:
点击“Configure”,点击“Yes”创建构建目录。
我本地安装的是VS 2022,这里我选择 Visual Studio 17 2022。
点击“Finish”等待配置完成:
配置完成,你将能看到构建opencv能使用的CMake选项。
默认情况下,opencv会构建动态连接库,如果你想构建静态连接库(库会很大,不推荐),你可以选中“Advanced”,然后修改“BUILD_SHARED_LIBS”为不选中,即可。
以下是OpenCV CMake-GUI中可能显示的一些选项及其含义:
CMAKE_INSTALL_PREFIX:指定安装路径。
WITH_TBB:是否启用Intel Threading Building Blocks(TBB)库。
WITH_CUBLAS:是否启用NVIDIA CUDA BLAS库。
WITH_V4L:是否启用Video for Linux 2(V4L)API。
WITH_QT:是否启用Qt库。
WITH_OPENGL:是否启用OpenGL支持。
WITH_GSTREAMER:是否启用GStreamer库。
WITH_FFMPEG:是否启用FFmpeg库。
WITH_OPENMP:是否启用OpenMP并行计算支持。
WITH_CUDA:是否启用CUDA支持。
WITH_CUDNN:是否启用NVIDIA cuDNN库。
WITH_LIBV4L:是否启用libv4l2库。
WITH_LIBGSTREAMER:是否启用libgstreamer库。
WITH_LIBAV:是否启用libav库。
WITH_LIBJPEG:是否启用libjpeg库。
WITH_LIBPNG:是否启用libpng库。
WITH_LIBWEBP:是否启用libwebp库。
WITH_LIBTIFF:是否启用libtiff库。
WITH_ZLIB:是否启用zlib库。
WITH_JPEG:是否启用JPEG压缩算法。
WITH_PNG:是否启用PNG压缩算法。
WITH_WEBP:是否启用WebP压缩算法。
WITH_TIFF:是否启用TIFF图像格式。
WITH_ZLIB:是否启用ZLIB压缩算法。
BUILD_EXAMPLES:是否构建示例程序。
BUILD_TESTS:是否构建测试程序。
ENABLE_FAST_MATH:是否启用快速数学库。
BUILD_opencv_python2:是否构建Python 2绑定的OpenCV模块。
BUILD_opencv_python3:是否构建Python 3绑定的OpenCV模块。
BUILD_opencv_java:是否构建Java绑定的OpenCV模块。
BUILD_opencv_persistence:是否构建OpenCV持久性模块。
BUILD_opencv_world:是否构建OpenCV世界模块,该模块包含所有可用的OpenCV功能。
BUILD_opencv_dnn:是否构建OpenCV深度神经网络模块。
BUILD_opencv_videoio:是否构建OpenCV视频输入/输出模块。
BUILD_opencv_imgproc:是否构建OpenCV图像处理模块。
BUILD_opencv_highgui:是否构建OpenCV图形用户界面模块。
BUILD_opencv_ml:是否构建OpenCV机器学习模块。
BUILD_opencv_objdetect:是否构建OpenCV目标检测模块。
BUILD_opencv_photo:是否构建OpenCV照片处理模块。
BUILD_opencv_shape:是否构建OpenCV形状分析模块。
这里选中“BUILD_opencv_world”(这样可以类似官方提供的安装包把所有的模块打包到一个lib和dll中),其他的保持默认值,即可:
点击“Generate”生成opencv vs 2022的解决方案:
生成完成,点击“Open Project”打开open cv vs 解决方案:
通过“生成->批生成..”打开批生成界面,选中“INSTALL” “Debug|x64”和“Release|x64”,点击“生成”进行库构建和安装:
整个构建过程需要花费几十分钟,请耐心等候:
构建完成,没有报任何错误,还不错,总共花了21分钟。
进入“D:\opencv\opencv4.8.0\sources\build\install”安装目录:
include:头文件所在目录。
x64:vs 2022生成lib和bin目录。
把“D:\opencv\opencv4.8.0\sources\build\install\x64\vc17\bin”, 添加到系统环境变量Path中,否则会提示opencv相关dll无法找到。
如果不想设置环境变量,也可以直接把dll复制到测试代码的运行目录。
通过VS 2022创建一个VC++的空项目:
配置vc++项目属性,添加opencv包含目录和库目录:
添加opencv bin路径到系统环境变量“Path”:
添加main.cpp文件:
#include
#include
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
运行main.cpp:
新建“D:\DemoSource\CMakeOpenCvDemo”目录,然后
创建文件“CMakeLists.txt”文件:
cmake_minimum_required(VERSION 3.15)
project(opencv_demo LANGUAGES CXX C)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(OpenCV_DIR D:/opencv/opencv4.8.0/sources/build/install)
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")
add_executable(opencv_demo main.cpp)
target_include_directories(opencv_demo PRIVATE ${OpenCV_INCLUDE_DIRS})
target_link_libraries(opencv_demo ${OpenCV_LIBS})
创建“main.cpp”文件:
#include
#include
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
创建“build”目录来存放出来的项目
通过命令行窗口进入“D:\DemoSource\CMakeOpenCvDemo”,通过“cmake -S . -B build”进行项目构建:
通过“cmake --build build”生成可执行文件:
本文通过图文详细介绍如何在windows和linux(Ubuntu)下安装opencv4.8.0, 并通过cmake项目或者vc++项目验证是否安装成功。