如何安裝C++版本的OpenCV
OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù),它包含了許多常用的圖像處理和計(jì)算機(jī)視覺(jué)算法。本文將介紹如何在Linux(Ubuntu)和Windows系統(tǒng)下安裝C++版本的OpenCV,并提供驗(yàn)證測(cè)試的方法。
一、OpenCV簡(jiǎn)介
OpenCV是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)庫(kù),它可以用于開(kāi)發(fā)實(shí)時(shí)的圖像處理和計(jì)算機(jī)視覺(jué)應(yīng)用。OpenCV的主要功能包括:圖像處理、特征檢測(cè)、物體識(shí)別、人臉識(shí)別等。OpenCV支持多種編程語(yǔ)言,如C++、Python、Java等。
OpenCV - Open Computer Vision Library
Get Started - OpenCV
二、Linux(Ubuntu)下安裝opencv
更新系統(tǒng)軟件包
在安裝OpenCV之前,首先需要更新系統(tǒng)的軟件包列表。在終端中輸入以下命令:
sudo apt-get update
安裝CMake
sudo apt install -y cmake
安裝gcc和g++
sudo apt install -y build-essential
方式1:通過(guò)apt直接安裝(Ubuntu20.4+opencv4.2.0)
?查看當(dāng)前Ubuntu系統(tǒng)版本和對(duì)應(yīng)的opencv版本
sudo uname -a
sudo apt-cache madison libopencv-dev
安裝opencv4.2.0
sudo apt install -y libopencv-dev
安裝成功,下面是安裝的相關(guān)路徑:
include目錄:?/usr/include/opencv4/
lib目錄:/usr/lib/x86_64-linux-gnu/
其中“*.a”的文件為庫(kù)文件,“*.so”文件為動(dòng)態(tài)連接庫(kù)。
bin目錄文件:/usr/bin
這種安裝方式會(huì)自動(dòng)安裝opencv依賴的第三方庫(kù),但是無(wú)法安裝比較新的版本,比如4.8.0
sudo apt install -y libopencv-dev=4.8.0
驗(yàn)證安裝是否成功
最簡(jiǎn)單的方式是:
whereis opencv_version
opencv_version
或者
安裝完成后,可以通過(guò)編寫一個(gè)簡(jiǎn)單的程序來(lái)驗(yàn)證OpenCV是否安裝成功。創(chuàng)建一個(gè)名為test_opencv.cpp
的C++文件,內(nèi)容如下:
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
在終端中運(yùn)行這個(gè)程序:
g++ test_opencv.cpp -o test_opencv `pkg-config --cflags --libs opencv4`
./test_opencv
方式2:從源代碼進(jìn)行安裝(ubuntu20.4+opencv 4.8.0)
OpenCV: Installation in Linux
安裝相關(guān)依賴
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
解壓下載回來(lái)的源代碼
unzip opencv.zip
創(chuàng)建并進(jìn)入構(gòu)建目錄?
mkdir -p build && cd build
配置opencv
設(shè)置安裝目錄為用戶目錄的 opencv4.8.0_install子目錄。
cmake ../opencv-4.8.0 -DCMAKE_INSTALL_PREFIX=~/opencv4.8.0_install
構(gòu)建opencv
cmake --build .
構(gòu)建完成之后檢查構(gòu)建結(jié)果

?
安裝opencv到用戶級(jí)別(可選)
備注:如果整個(gè)過(guò)程沒(méi)有報(bào)錯(cuò)了,說(shuō)明沒(méi)有安裝成功。
安裝opencv到操作系統(tǒng)級(jí)別(可選,不建議)
sudo make install
注意:這個(gè)默認(rèn)會(huì)在操作系統(tǒng)級(jí)別更新opencv的版本,一般情況下,我們采用CMake來(lái)進(jìn)行項(xiàng)目構(gòu)建,通過(guò)CMake項(xiàng)目來(lái)設(shè)置對(duì)新構(gòu)建的opencv版本依賴關(guān)系,這樣方便我們維護(hù)項(xiàng)目之間的opencv版本相互獨(dú)立。
驗(yàn)證安裝是否成功
直接運(yùn)行構(gòu)建出來(lái)的bin文件:
或者通過(guò)CMake項(xiàng)目+CPP代碼來(lái)進(jìn)行測(cè)試:
在用戶目錄下創(chuàng)建“cmake_opencv_demo”,在該目錄下創(chuàng)建“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;
}
?進(jìn)入“cmake_opencv_demo”,通過(guò)“cmake -S . -B build”構(gòu)建c++項(xiàng)目:
通過(guò)“cmake --build build”目錄生成可執(zhí)行文件:
運(yùn)行可執(zhí)行文件:
三、Windows系統(tǒng)安裝OpenCV
方式1:直接下載windows安裝包
進(jìn)入Release OpenCV 4.8.0 · opencv/opencv · GitHub
下載完,直接解壓到的“D:\opencv\opencv4.8.0”即可:
sources: 為源代碼目錄。
build:基于vs 2019構(gòu)建的版本。
include:包含相關(guān)頭文件。
x64:使用vs 2019 構(gòu)建的x64的Debug和Release版本。
bin:windows下相關(guān)exe工具,以及包含所有模塊的動(dòng)態(tài)庫(kù)(dll), 帶'd'為Debug版本。
lib:包含所有模塊的庫(kù)文件,? 帶'd'為Debug版本。
方式2:從源代碼構(gòu)建(vs 2022)
安裝CMake,可以參考
[CMake] 基礎(chǔ)教程 - CMake安裝和驗(yàn)證測(cè)試(Windows)
使用“cmake-gui”進(jìn)行項(xiàng)目配置
源代碼目錄設(shè)置“D:/opencv/opencv4.8.0/sources”,構(gòu)建目錄設(shè)置為“D:/opencv/opencv4.8.0/sources/build”:
點(diǎn)擊“Configure”,點(diǎn)擊“Yes”創(chuàng)建構(gòu)建目錄。
?我本地安裝的是VS 2022,這里我選擇 Visual Studio 17 2022。
點(diǎn)擊“Finish”等待配置完成:
配置完成,你將能看到構(gòu)建opencv能使用的CMake選項(xiàng)。
這里還可以看到默認(rèn)情況下,庫(kù)文件和動(dòng)態(tài)庫(kù)的安目錄:
默認(rèn)情況下,opencv會(huì)構(gòu)建動(dòng)態(tài)連接庫(kù),如果你想構(gòu)建靜態(tài)連接庫(kù)(庫(kù)會(huì)很大,不推薦),你可以選中“Advanced”,然后修改“BUILD_SHARED_LIBS”為不選中,即可。
?下面是opencv構(gòu)建的常用選項(xiàng)的說(shuō)明:
以下是OpenCV CMake-GUI中可能顯示的一些選項(xiàng)及其含義:
CMAKE_INSTALL_PREFIX:指定安裝路徑。
WITH_TBB:是否啟用Intel Threading Building Blocks(TBB)庫(kù)。
WITH_CUBLAS:是否啟用NVIDIA CUDA BLAS庫(kù)。
WITH_V4L:是否啟用Video for Linux 2(V4L)API。
WITH_QT:是否啟用Qt庫(kù)。
WITH_OPENGL:是否啟用OpenGL支持。
WITH_GSTREAMER:是否啟用GStreamer庫(kù)。
WITH_FFMPEG:是否啟用FFmpeg庫(kù)。
WITH_OPENMP:是否啟用OpenMP并行計(jì)算支持。
WITH_CUDA:是否啟用CUDA支持。
WITH_CUDNN:是否啟用NVIDIA cuDNN庫(kù)。
WITH_LIBV4L:是否啟用libv4l2庫(kù)。
WITH_LIBGSTREAMER:是否啟用libgstreamer庫(kù)。
WITH_LIBAV:是否啟用libav庫(kù)。
WITH_LIBJPEG:是否啟用libjpeg庫(kù)。
WITH_LIBPNG:是否啟用libpng庫(kù)。
WITH_LIBWEBP:是否啟用libwebp庫(kù)。
WITH_LIBTIFF:是否啟用libtiff庫(kù)。
WITH_ZLIB:是否啟用zlib庫(kù)。
WITH_JPEG:是否啟用JPEG壓縮算法。
WITH_PNG:是否啟用PNG壓縮算法。
WITH_WEBP:是否啟用WebP壓縮算法。
WITH_TIFF:是否啟用TIFF圖像格式。
WITH_ZLIB:是否啟用ZLIB壓縮算法。
BUILD_EXAMPLES:是否構(gòu)建示例程序。
BUILD_TESTS:是否構(gòu)建測(cè)試程序。
ENABLE_FAST_MATH:是否啟用快速數(shù)學(xué)庫(kù)。
BUILD_opencv_python2:是否構(gòu)建Python 2綁定的OpenCV模塊。
BUILD_opencv_python3:是否構(gòu)建Python 3綁定的OpenCV模塊。
BUILD_opencv_java:是否構(gòu)建Java綁定的OpenCV模塊。
BUILD_opencv_persistence:是否構(gòu)建OpenCV持久性模塊。
BUILD_opencv_world:是否構(gòu)建OpenCV世界模塊,該模塊包含所有可用的OpenCV功能。
BUILD_opencv_dnn:是否構(gòu)建OpenCV深度神經(jīng)網(wǎng)絡(luò)模塊。
BUILD_opencv_videoio:是否構(gòu)建OpenCV視頻輸入/輸出模塊。
BUILD_opencv_imgproc:是否構(gòu)建OpenCV圖像處理模塊。
BUILD_opencv_highgui:是否構(gòu)建OpenCV圖形用戶界面模塊。
BUILD_opencv_ml:是否構(gòu)建OpenCV機(jī)器學(xué)習(xí)模塊。
BUILD_opencv_objdetect:是否構(gòu)建OpenCV目標(biāo)檢測(cè)模塊。
BUILD_opencv_photo:是否構(gòu)建OpenCV照片處理模塊。
BUILD_opencv_shape:是否構(gòu)建OpenCV形狀分析模塊。
這里選中“BUILD_opencv_world”(這樣可以類似官方提供的安裝包把所有的模塊打包到一個(gè)lib和dll中),其他的保持默認(rèn)值,即可:
?點(diǎn)擊“Generate”生成opencv vs 2022的解決方案:
生成完成,點(diǎn)擊“Open Project”打開(kāi)open cv vs 解決方案:
通過(guò)VS 2022構(gòu)建open cv動(dòng)態(tài)鏈接庫(kù)
通過(guò)“生成->批生成..”打開(kāi)批生成界面,選中“INSTALL” “Debug|x64”和“Release|x64”,點(diǎn)擊“生成”進(jìn)行庫(kù)構(gòu)建和安裝:
整個(gè)構(gòu)建過(guò)程需要花費(fèi)幾十分鐘,請(qǐng)耐心等候:
構(gòu)建完成,沒(méi)有報(bào)任何錯(cuò)誤,還不錯(cuò),總共花了21分鐘。
進(jìn)入“D:\opencv\opencv4.8.0\sources\build\install”安裝目錄:
include:頭文件所在目錄。
x64:vs 2022生成lib和bin目錄。
操作系統(tǒng)環(huán)境變量設(shè)置
把“D:\opencv\opencv4.8.0\sources\build\install\x64\vc17\bin”, 添加到系統(tǒng)環(huán)境變量Path中,否則會(huì)提示opencv相關(guān)dll無(wú)法找到。
如果不想設(shè)置環(huán)境變量,也可以直接把dll復(fù)制到測(cè)試代碼的運(yùn)行目錄。
通過(guò)VS進(jìn)行驗(yàn)證測(cè)試
通過(guò)VS 2022創(chuàng)建一個(gè)VC++的空項(xiàng)目:
配置vc++項(xiàng)目屬性,添加opencv包含目錄和庫(kù)目錄:
?添加opencv bin路徑到系統(tǒng)環(huán)境變量“Path”:
添加main.cpp文件:
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
運(yùn)行main.cpp:
通過(guò)CMake進(jìn)行驗(yàn)證測(cè)試
新建“D:\DemoSource\CMakeOpenCvDemo”目錄,然后
創(chuàng)建文件“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})
創(chuàng)建“main.cpp”文件:
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
創(chuàng)建“build”目錄來(lái)存放出來(lái)的項(xiàng)目
通過(guò)命令行窗口進(jìn)入“D:\DemoSource\CMakeOpenCvDemo”,通過(guò)“cmake -S . -B build”進(jìn)行項(xiàng)目構(gòu)建:
通過(guò)“cmake --build build”生成可執(zhí)行文件:
?運(yùn)行可執(zhí)行文件“opencv_demo.exe”:
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-775162.html
四、總結(jié)
本文通過(guò)圖文詳細(xì)介紹如何在windows和linux(Ubuntu)下安裝opencv4.8.0, 并通過(guò)cmake項(xiàng)目或者vc++項(xiàng)目驗(yàn)證是否安裝成功。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-775162.html
到了這里,關(guān)于[C++] 詳細(xì)教程 - opencv4.8.0安裝和驗(yàn)證測(cè)試 (Windows + Linux)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!