上一個教程: 在 Eclipse (CDT 外掛) 中使用 OpenCV
下一個教程: 如何在“Microsoft Visual Studio”中用 OpenCV 構建應用程式
原始作者 Bernát Gábor
相容性 OpenCV >= 3.0
警告 本教程可能包含過時的資訊。
此處描述的內容已在 Windows 7 SP1 上進行測試。然而,它也應該適用於任何其他相對現代的 Windows 作業系統版本。如果您在按照以下步驟操作後遇到錯誤,請隨時透過我們的 OpenCV 問答論壇 與我們聯絡。我們將盡力幫助您。
注意 要使用 OpenCV 庫,您有兩種選擇:使用預編譯庫進行安裝 或 從原始碼構建自己的庫進行安裝 。雖然第一種方法更容易完成,但它僅適用於您使用最新的 Microsoft Visual Studio IDE 程式設計,並且不利用我們庫中整合的最先進技術的情況。 .. _Windows_Install_Prebuild
使用預編譯庫進行安裝
開啟您選擇的網頁瀏覽器,訪問我們在 Sourceforge 上的頁面 。
選擇您要使用的版本並下載。
確保您具有管理員許可權。解壓自解壓歸檔檔案。
您可以在所選路徑檢查安裝情況,如下所示。
要完成安裝,請轉到 設定 OpenCV 環境變數並將其新增到系統路徑 部分。
使用 git-bash (版本>=2.14.1) 和 cmake (版本 >=3.9.1) 進行安裝
您必須下載並安裝 cmake (版本 >=3.9.1) 。安裝過程中必須將 cmake 新增到 PATH 變數中
您必須安裝 git-bash (版本>=2.14.1) 。安裝過程中不要將 git 新增到 PATH 變數中
執行 git-bash。您會看到一個命令列視窗。假設您想在 c:/lib 中構建 opencv 和 opencv_contrib
在 git 命令列中輸入以下命令(如果資料夾不存在)
將此指令碼儲存為 installOCV.sh 在 c:/lib#!/bin/bash -e
myRepo=$(pwd)
CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 16 2019"
#CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 15 2017 Win64"
#CMAKE_GENERATOR_OPTIONS=(-G"Visual Studio 16 2019" -A x64) # CMake 3.14+ 需要
if [ ! -d "$myRepo/opencv" ]; then
echo "克隆 opencv"
git clone https://github.com/opencv/opencv.git
else
cd opencv
git pull --rebase
cd ..
fi
if [ ! -d "$myRepo/opencv_contrib" ]; then
echo "克隆 opencv_contrib"
git clone https://github.com/opencv/opencv_contrib.git
else
cd opencv_contrib
git pull --rebase
cd ..
fi
RepoSource=opencv
mkdir -p build_opencv
pushd build_opencv
CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DWITH_CUDA:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DINSTALL_CREATE_DISTRIB=ON)
set -x
cmake "${CMAKE_GENERATOR_OPTIONS[@]}" "${CMAKE_OPTIONS[@]}" -DOPENCV_EXTRA_MODULES_PATH="$myRepo"/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource" "$myRepo/$RepoSource"
echo "************************* $Source_DIR -->debug"
cmake --build . --config debug
echo "************************* $Source_DIR -->release"
cmake --build . --config release
cmake --build . --target install --config release
cmake --build . --target install --config debug
popd
在此指令碼中,我假設您在 64 位中使用 VS 2015CMAKE_GENERATOR_OPTIONS=-G"Visual Studio 14 2015 Win64"
opencv 將安裝在 c:/lib/install/opencv-DCMAKE_INSTALL_PREFIX="$myRepo/install/$RepoSource"
沒有效能測試,沒有測試,沒有文件,沒有 CUDA,也沒有示例CMAKE_OPTIONS=(-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF)
在 git 命令列中輸入以下命令
喝杯咖啡或兩杯……opencv 已就緒:就是這樣!
下次您執行此指令碼時,opencv 和 opencv_contrib 將會被更新和重新構建。
從原始碼構建自己的庫進行安裝
您也可以在以下 YouTube 影片中找到本教程的內容:第一部分 和 第二部分 。
VIDEO
VIDEO
警告
上述影片已過時,包含不準確的資訊。請注意,這些影片中描述的解決方案已不再受支援,甚至可能導致您的安裝損壞。
如果您要構建自己的庫,可以從我們的 Git 倉庫 獲取原始檔。
從頭開始構建 OpenCV 庫需要預先安裝一些工具
選擇一個 IDE(首選),或者只選擇一個實際生成二進位制檔案的 C/C++ 編譯器。這裡我們將使用 Microsoft Visual Studio 。然而,您可以使用任何其他具有有效 C/C++ 編譯器的 IDE。
CMake 是一個很棒的工具,可以從 OpenCV 原始檔生成專案檔案(用於您選擇的 IDE)。它還可以輕鬆配置 OpenCV 構建檔案,以生成完全符合您需求的二進位制檔案。
Git 用於獲取 OpenCV 原始檔。一個很好的工具是 TortoiseGit 。或者,您可以直接從我們在 Sourceforge 上的頁面 下載原始檔的歸檔版本
OpenCV 可能有多種形式。有一個“核心”部分可以獨立工作。然而,也有一些由第三方製作的工具和庫,它們提供 OpenCV 可以利用的服務。這些服務將以多種方式增強其功能。要使用其中任何一個,您需要將它們下載並安裝到您的系統上。
現在我們將描述進行完整構建(使用所有上述框架、工具和庫)的步驟。如果您不需要其中某些框架的支援,可以隨意跳過此部分。
構建庫
確保您有一個帶有有效編譯器的可工作 IDE。對於 Microsoft Visual Studio,只需安裝它並確保它能啟動。
安裝 CMake 。只需按照嚮導操作,無需將其新增到路徑中。預設安裝選項即可。
從其 官方網站 下載並安裝最新版本的 msysgit。還有便攜版,您只需解壓即可訪問 Git 的控制檯版本。假設對我們中的一些人來說,這已經足夠了。
安裝 TortoiseGit 。根據您所用作業系統的型別選擇 32 位或 64 位版本。安裝時,找到您的 msysgit(如果它沒有自動找到)。按照嚮導操作 – 大部分預設選項即可。
在檔案系統中選擇一個目錄,您將把 OpenCV 庫下載到其中。我建議建立一個新目錄,路徑短且不包含特殊字元,例如 D:/OpenCV。對於本教程,我建議您這樣做。如果您使用自己的路徑並知道自己在做什麼——那也沒關係。
將倉庫克隆到選定的目錄。點選 Clone 按鈕後,會出現一個視窗,您可以在其中選擇要從哪個倉庫下載原始檔(https://github.com/opencv/opencv.git )以及下載到哪個目錄(D:/OpenCV)。
點選“確定”按鈕並耐心等待,因為這個倉庫下載量很大。它會花費一些時間,具體取決於您的網際網路連線。
在本節中,我將介紹如何安裝第三方庫。
下載 Python 庫 並使用預設選項安裝。您還需要其他幾個 python 擴充套件。幸運的是,安裝這些可以透過一個名為 Setuptools 的好工具自動化。再次下載並安裝。
安裝 Numpy 最簡單的方法就是從 sourceforge 頁面 下載其二進位制檔案。確保您下載並安裝了與您的 Python 版本完全匹配的二進位制檔案(例如 2.7 版本)。
對於 Intel Threading Building Blocks (TBB ) ,下載原始檔並將其解壓到系統中的一個目錄。例如,可以放在 D:/OpenCV/dep。對於安裝 Intel Integrated Performance Primitives (IPP ) ,情況也類似。對於解壓歸檔檔案,我建議使用 7-Zip 應用程式。
對於 Eigen 庫,同樣需要下載並解壓到 D:/OpenCV/dep 目錄。
與 OpenEXR 相同。
對於 OpenNI 框架 ,您需要同時安裝 開發版本 和 PrimeSensor 模組 。
對於 CUDA,您同樣需要兩個模組:最新的 CUDA Toolkit 和 CUDA Tools SDK 。根據您的作業系統,使用 32 位或 64 位安裝程式,以完整 選項下載並安裝它們。
如果是 Qt 框架,您需要自己構建二進位制檔案(除非您使用 Microsoft Visual Studio 2008 和 32 位編譯器)。要做到這一點,請訪問 Qt 下載 頁面。下載原始檔(不是安裝程式!!!)
將其解壓到一個名稱簡短且易記的目錄,例如 D:/OpenCV/dep/qt/。然後您需要構建它。透過使用開始選單搜尋(或導航至“開始”選單 -> “所有程式” -> “Microsoft Visual Studio 2010” -> “Visual Studio Tools” -> “Visual Studio 命令提示符 (2010)”)啟動一個 Visual Studio 命令提示符 (2010 )。
現在,使用此控制檯視窗導航到已解壓的資料夾並進入其中。您應該有一個包含“Install”、“Make”等檔案的資料夾。使用“dir”命令列出當前目錄中的檔案。到達此目錄後,輸入以下命令
configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools
-no-qt3support -no-multimedia -no-ltcg
完成此操作大約需要 10-20 分鐘。然後輸入下一個命令,這將花費更長的時間(甚至可能超過一小時)
之後,在 Windows 7 上使用以下命令設定 Qt 環境變數
setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
此外,使用 PathEditor 將構建的二進位制檔案路徑新增到系統路徑中。在本例中,它是 D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3/bin。
注意 如果您計劃進行 Qt 應用程式開發,此時您也可以安裝 Qt Visual Studio Add-in 。之後,您無需使用 Qt Creator 即可建立和構建 Qt 應用程式。一切都很好地整合到 Visual Studio 中。
現在啟動 CMake (cmake-gui) 。您可以再次在開始選單搜尋中輸入它,或者從“所有程式” -> “CMake 2.8” -> “CMake (cmake-gui)”中找到它。首先,選擇 OpenCV 庫原始檔的目錄 (1)。然後,指定一個目錄,您將在其中構建 OpenCV 的二進位制檔案 (2)。
按下配置按鈕,指定您要使用的編譯器(和 IDE )。請注意,您可以選擇不同的編譯器來生成 64 位或 32 位庫。選擇您在應用程式開發中使用的那個。
CMake 將啟動,並根據您的系統變數嘗試自動定位儘可能多的包。您可以在 WITH -> WITH_X 選單項中修改要用於構建的包(其中 X 是包的縮寫)。以下是您可以開啟或關閉的當前包列表
選擇所有您想使用的包,然後再次按下 Configure 按鈕。為了更輕鬆地概覽構建選項,請確保二進位制目錄選擇下方的 Grouped 選項已開啟。對於某些包,CMake 可能找不到所有必需的檔案或目錄。在這種情況下,CMake 將在其輸出視窗(位於 GUI 底部)中丟擲錯誤,並將其欄位值設定為未找到的常量。例如
對於這些,您需要手動設定查詢到的目錄或檔案路徑。之後再次按下 Configure 按鈕,檢視您輸入的值是否被接受。重複此操作,直到所有條目都正確,並且在欄位/值或 GUI 的輸出部分看不到錯誤。現在我想強調一個您一定會喜歡的選項:ENABLE -> ENABLE_SOLUTION_FOLDERS。OpenCV 將建立許多專案,開啟此選項將確保它們在 Solution Explorer 中按目錄分類。如果您問我,這是一個必備功能。
此外,您需要選擇要構建的 OpenCV 的哪些部分。
BUILD_DOCS -> 它建立兩個專案來構建 OpenCV 的文件(將有一個單獨的專案用於構建 HTML 和 PDF 檔案)。請注意,這些專案不與解決方案一起構建。您需要對它們發出顯式構建專案命令才能完成此操作。
BUILD_EXAMPLES -> OpenCV 附帶許多示例應用程式,您可以從中學習庫的大部分功能。這對於輕鬆測試 OpenCV 是否在您的計算機上完全正常工作也很有用。
BUILD_PACKAGE -> 在 2.3 版本之前,您可以透過此構建一個專案,該專案將構建一個 OpenCV 安裝程式。透過它,您可以輕鬆地在其他系統上安裝您的 OpenCV 版本。對於最新的 OpenCV 原始檔,它生成一個新專案,該專案只是建立一個包含 OpenCV 源的 zip 歸檔檔案。
BUILD_SHARED_LIBS -> 透過此選項,您可以控制是構建 DLL 檔案(開啟時)還是靜態庫檔案 (*.lib)(否則)。
BUILD_TESTS -> OpenCV 的每個模組都分配有一個測試專案。構建這些測試專案也是一個很好的方法,可以測試這些模組在您的系統上是否也按預期工作。
BUILD_PERF_TESTS -> 還有許多 OpenCV 函式的效能測試。如果您關注效能,請構建並執行它們。
BUILD_opencv_python -> 不言自明。建立二進位制檔案以從 Python 語言使用 OpenCV。
BUILD_opencv_world -> 生成一個單一的“opencv_world”二進位制檔案(共享庫或靜態庫,取決於 BUILD_SHARED_LIBS ),包含所有模組,而不是單獨的二進位制檔案集合(每個模組一個二進位制檔案)。
再次按下 Configure 按鈕,確保沒有報告錯誤。如果一切正常,您可以點選 Generate 按鈕告訴 CMake 建立專案檔案。轉到構建目錄並開啟建立的 OpenCV 解決方案。根據您選擇了多少上述選項,解決方案可能包含相當多的專案,因此在啟動時請對 IDE 保持耐心。現在您需要構建 Release 和 Debug 二進位制檔案。構建其中一個版本後,使用 IDE 上的下拉選單切換到另一個版本。
最後,您可以在 bin 目錄中看到構建好的二進位制檔案
對於文件,您需要顯式地對 doxygen 專案發出構建命令以生成 HTML 文件。它將呼叫 Doxygen 來完成所有繁重的工作。您可以在 build/doc/doxygen/html 中找到生成的文件。
要將您自己專案中將使用的標頭檔案和二進位制檔案收集到一個單獨的目錄中(類似於預編譯二進位制檔案的釋出方式),您需要顯式構建 Install 專案。
這將在 Build 目錄內建立一個 Install 目錄,將所有構建的二進位制檔案收集到一處。僅在您構建了 Release 和 Debug 版本之後才使用此功能。
要測試您的構建,只需進入 Build/bin/Debug 或 Build/bin/Release 目錄並啟動幾個應用程式,例如 contours.exe 。如果它們執行正常,則表示您已完成。否則,肯定出了非常嚴重的錯誤。在這種情況下,您應該聯絡我們的 問答論壇 。如果一切正常,contours.exe 的輸出應該類似於以下影像(如果支援 Qt 構建)
注意 如果您使用 GPU 模組 (CUDA 庫),請確保您也已升級到最新的 GPU 驅動程式。包含無效條目(或無法找到)nvcuda.dll 的錯誤訊息通常是由舊顯示卡驅動程式引起的。要測試 GPU(如果已構建),請執行 performance_gpu.exe 示例應用程式。
設定 OpenCV 環境變數並將其新增到系統路徑
首先,我們設定一個環境變數,使我們的工作更輕鬆。這將儲存我們在專案中使用的 OpenCV 庫的構建目錄。啟動一個命令視窗並輸入
setx OpenCV_DIR D:\OpenCV\build\x64\vc14 (建議用於 Visual Studio 2015 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc14 (建議用於 Visual Studio 2015 - 32 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc15 (建議用於 Visual Studio 2017 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc15 (建議用於 Visual Studio 2017 - 32 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc16 (建議用於 Visual Studio 2019 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc16 (建議用於 Visual Studio 2019 - 32 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x64\vc17 (建議用於 Visual Studio 2022 - 64 位 Windows)
setx OpenCV_DIR D:\OpenCV\build\x86\vc17 (建議用於 Visual Studio 2022 - 32 位 Windows)
這裡的目錄是您存放 OpenCV 二進位制檔案(已提取 或 已構建 )的地方。您可以有不同的平臺(例如 x64 而不是 x86)或編譯器型別,因此請替換相應的值。在此目錄中,您應該有兩個名為 lib 和 bin 的資料夾。
如果您構建了靜態庫,那麼您就完成了。否則,您需要將 bin 資料夾的路徑新增到系統路徑中。這是因為您將以“動態連結庫”(也稱為 DLL )的形式使用 OpenCV 庫。其中儲存了 OpenCV 庫包含的所有演算法和資訊。作業系統只會在執行時按需載入它們。然而,要做到這一點,作業系統需要知道它們在哪裡。系統的 PATH 包含一個可以找到 DLL 的資料夾列表。將 OpenCV 庫路徑新增到此列表中,作業系統就會知道在需要 OpenCV 二進位制檔案時去哪裡查詢。否則,您將需要將使用的 DLL 複製到應用程式的可執行檔案 (exe ) 旁邊,以便作業系統找到它,這在處理多個專案時會非常不便。要做到這一點,請再次啟動 PathEditor 並新增以下新條目(在應用程式中右鍵單擊以調出選單)
將其儲存到登錄檔,您就完成了。如果您更改構建目錄的位置,或者想用不同的構建來嘗試您的應用程式,您所需要做的就是透過命令視窗中的 setx 命令更新 OPENCV_DIR 變數。
現在您可以繼續閱讀教程中的 如何在“Microsoft Visual Studio”中用 OpenCV 構建應用程式 部分。在那裡您將瞭解如何在 Microsoft Visual Studio IDE 的幫助下,在您自己的專案中使用 OpenCV 庫。