0


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

如何安装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_version
opencv_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++项目验证是否安装成功。

标签: c++ opencv 开发语言

本文转载自: https://blog.csdn.net/u011775793/article/details/134830399
版权归原作者 老狼IT工作室 所有, 如有侵权,请联系我们删除。

“[C++] 详细教程 - opencv4.8.0安装和验证测试 (Windows + Linux)”的评论:

还没有评论