[C++] 详细教程 - opencv4.8.0安装和验证测试 (Windows + Linux)

老狼IT工作室 2024-06-22 16:37:01 阅读 71

如何安装C++版本的OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了许多常用的图像处理和计算机视觉算法。本文将介绍如何在Linux(Ubuntu)和Windows系统下安装C++版本的OpenCV,并提供验证测试的方法。

一、OpenCV简介

OpenCV是一个跨平台的计算机视觉库,它可以用于开发实时的图像处理和计算机视觉应用。OpenCV的主要功能包括:图像处理、特征检测、物体识别、人脸识别等。OpenCV支持多种编程语言,如C++、Python、Java等。

OpenCV - Open Computer Vision Library

Get Started - OpenCV

二、Linux(Ubuntu)下安装opencv

更新系统软件包

在安装OpenCV之前,首先需要更新系统的软件包列表。在终端中输入以下命令:

sudo apt-get update

安装CMake

sudo apt install -y cmake

安装gcc和g++

sudo apt install -y build-essential

方式1:通过apt直接安装(Ubuntu20.4+opencv4.2.0)

 查看当前Ubuntu系统版本和对应的opencv版本

sudo uname -a sudo apt-cache madison libopencv-dev

安装opencv4.2.0

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_versionopencv_version

或者

安装完成后,可以通过编写一个简单的程序来验证OpenCV是否安装成功。创建一个名为test_opencv.cpp的C++文件,内容如下:

#include <iostream>#include <opencv2/opencv.hpp>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

方式2:从源代码进行安装(ubuntu20.4+opencv 4.8.0)

OpenCV: Installation in Linux

安装相关依赖

sudo apt install -y cmake g++ wget unzip

下载opencv4.8.0的源代码 

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.8.0.zip

解压下载回来的源代码

unzip opencv.zip

创建并进入构建目录 

mkdir -p build && cd build

配置opencv

设置安装目录为用户目录的 opencv4.8.0_install子目录。

cmake ../opencv-4.8.0 -DCMAKE_INSTALL_PREFIX=~/opencv4.8.0_install

构建opencv

cmake --build .

构建完成之后检查构建结果

 

安装opencv到用户级别(可选)

备注:如果整个过程没有报错了,说明没有安装成功。

安装opencv到操作系统级别(可选,不建议)

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 <iostream>#include <opencv2/opencv.hpp>int main() { std::cout << "OpenCV version: " << CV_VERSION << std::endl; return 0;}

 进入“cmake_opencv_demo”,通过“cmake -S . -B build”构建c++项目:

通过“cmake --build build”目录生成可执行文件:

运行可执行文件:

三、Windows系统安装OpenCV

方式1:直接下载windows安装包

进入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版本。

lib:包含所有模块的库文件,  带'd'为Debug版本。

方式2:从源代码构建(vs 2022)

安装CMake,可以参考

[CMake] 基础教程 - CMake安装和验证测试(Windows)

使用“cmake-gui”进行项目配置

源代码目录设置“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构建的常用选项的说明:

以下是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 解决方案:

通过VS 2022构建open cv动态链接库

通过“生成->批生成..”打开批生成界面,选中“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进行验证测试

通过VS 2022创建一个VC++的空项目:

配置vc++项目属性,添加opencv包含目录和库目录:

 添加opencv bin路径到系统环境变量“Path”:

添加main.cpp文件:

#include <iostream>#include <opencv2/opencv.hpp>int main() { std::cout << "OpenCV version: " << CV_VERSION << std::endl; return 0;}

运行main.cpp:

通过CMake进行验证测试

新建“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 <iostream>#include <opencv2/opencv.hpp>int main() { std::cout << "OpenCV version: " << CV_VERSION << std::endl; return 0;}

创建“build”目录来存放出来的项目

通过命令行窗口进入“D:\DemoSource\CMakeOpenCvDemo”,通过“cmake -S . -B build”进行项目构建:

通过“cmake --build build”生成可执行文件:

 运行可执行文件“opencv_demo.exe”:

四、总结

本文通过图文详细介绍如何在windows和linux(Ubuntu)下安装opencv4.8.0, 并通过cmake项目或者vc++项目验证是否安装成功。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。