文章作者:王一凡
本文主要介紹在 Windows 中基于 Visual Studio 配置 OpenVINO C++ 開發(fā)環(huán)境,主要步驟有:
下載并安裝 Visual Studio Community 版
下載并解壓 OpenVINO Runtime
下載并解壓 OpenCV
在 Visual Studio 中配置項目屬性
運行 OpenVINO C++ 范例程序,測試開發(fā)環(huán)境
下面,本文將依次詳述。
1.1下載并安裝 Visual Studio Community 版
Microsoft Visual Studio(簡稱VS)是 Windows 平臺上非常好用的集成開發(fā)環(huán)境(IDE),其 Community 版本免費供學(xué)生、開放源代碼參與者和個人使用。
從下方地址下載 Visual Studio 2022 Community 版,安裝選項如圖 1-1 所示:
https://visualstudio.microsoft.com/zh-hans/downloads/
圖 1-1 ?Visual Studio 2022安裝選項
1.2 下載并解壓 OpenVINO Runtime
OpenVINO? Runtime 2022.3 以壓縮包(OpenVINO Archives)的形式提供,里面包含了開發(fā) OpenVINO C++ 推理程序所必需的文件,如圖 1-2 所示:
C++預(yù)處理器所需的頭文件:include文件夾
C++鏈接器所需的lib文件:lib文件夾
可執(zhí)行文件(*.exe)所需的動態(tài)鏈接庫文件:bin文件夾
OpenVINO runtime第三方依賴庫文件:3rdparty文件夾
圖 1-2 ?開發(fā) OpenVINO C++ 推理程序所必需的文件
首先,請讀者先打開下面的鏈接,下載 OpenVINO?? Runtime 2022.3 壓縮包:
https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html
然后,請讀者手動新建 C:Program Files (x86)Intelopenvino_2022.3.0 文件夾,并把壓縮包解壓后的文件拷貝到 openvino_2022.3.0 文件夾中,完成OpenVINO Runtime 壓縮包的下載和解壓工作,如圖 1-3 所示。
圖 1-3 ?下載并解壓 OpenVINO Runtime 壓縮包
1.3 下載并解壓 OpenCV
在端到端的 AI 推理計算流程中,OpenCV 庫用于實現(xiàn)圖像載入、數(shù)據(jù)前處理、推理結(jié)果后處理和數(shù)據(jù)可視化,如圖1-4 所示。
圖 1-4 ?端到端的 AI 推理計算流程
OpenCV 也是以壓縮包的形式提供,從下方地址下載? Windows 平臺上的壓縮包:
https://opencv.org/releases/
首先,手動新建 C:opencv 文件夾;然后,把 OpenCV 解壓后的 build 文件夾全部拷貝到 C:opencv 文件夾,如圖 1-5 所示,完成 OpenCV 的下載并解壓。
圖 1-5 ?下載并解壓 OpenCV
1.4 在 Visual Studio 中配置項目屬性
在 Visual Studio 中配置項目屬性,主要是告訴 C++ 編譯器和鏈接器,OpenVINO? 和 OpenCV 的頭文件以及庫文件在哪里。
第一步,打開 Visual Studio 2022 Community,在“文件(F)”菜單中選擇“新建(N)→項目(P)”,新建一個 C++ 空項目。
第二步,在“文件(F)菜單”中選擇“新建(N)→文件(F)”,新建一個 main.cpp 文件,并添加到項目管理器的源文件文件夾中。
第三步,在“解決方案資源管理器”中,右鍵單擊項目名稱,在右鍵菜單中選擇“屬性(R)”,啟動“屬性頁”對話框。
在“配置(C)”欄選擇“所有配置”,在“平臺(P)”欄選擇“所有平臺”;
在“輸出目錄”輸入
“$(SolutionDir)bin$(Platform)$(Configuration)”;
在“中間目錄”輸入
“$(SolutionDir)Intermediate$(Platform)$(Configuration)”
第四步,在“屬性頁”對話框中選中“C/C++→常規(guī)”;在“平臺(P)”欄選擇“x64”;在“附加包含目錄”中輸入:
C:Program Files (x86)Intelopenvino_2022.3.0runtimeinclude
C:opencvbuildinclude
第五步,在“屬性頁”對話框中選中“鏈接器→常規(guī)”;在“平臺(P)”欄選擇“x64”;在“附加庫目錄”中輸入:
C:Program Files (x86)Intelopenvino_2022.3.0runtimelibintel64$(Configuration)
C:opencvbuildx64vc16lib
第六步,在“屬性頁”對話框中選中“鏈接器→輸入”,在“配置(C)”欄選擇“Debug”,在“平臺(P)”欄選擇“x64”,然后在“附加依賴項”中添加:
openvinod.lib;opencv_world470d.lib;
將“配置(C)”欄改為“Release”,然后在“附加依賴項”中添加:
openvino.lib;opencv_world470.lib;
到此,完成在 Visual Studio 中配置 OpenVINO C++ 推理計算項目屬性。
1.5 運行 OpenVINO C++ 范例程序
測試開發(fā)環(huán)境
首先,請將下面的代碼拷貝到 main.cpp 中,源代碼下載地址:
https://gitee.com/ppov-nuc/yolov5_infer/blob/main/test_ov_opencv.cpp
#include <iostream>
#include <string>
#include <openvino/openvino.hpp> //openvino header file
#include <opencv2/opencv.hpp> ? ?//opencv header file
int main(int argc, char* argv[]) {
? ?// -------- Get OpenVINO runtime version --------
? ?std::cout << ov::get_openvino_version().description << ':' << ov::get_openvino_version().buildNumber << std::endl;
? ?// -------- Step 1. Initialize OpenVINO Runtime Core --------
? ?ov::Core core;
? ?// -------- Step 2. Get list of available devices --------
? ?std::vector<std::string> availableDevices = core.get_available_devices();
? ?// -------- Step 3. Query and print supported metrics and config keys --------
? ?std::cout << "Available devices: " << std::endl;
? ?for (auto&& device : availableDevices) {
? ? ? ?std::cout << device << std::endl;
? ?}
? ?// -------- Step 4. Read a picture file and show by OpenCV --------
? ?cv::Mat img = cv::imread("zidane.jpg"); //Load a picture into memory
? ?cv::imshow("Test OpenVINO & OpenCV IDE", img);
? ?std::cout << "Image width: " << img.cols << " height: " << img.rows << std::endl;
? ?cv::waitKey(0);
? ?cv::destroyAllWindows();
? ?return 0;
}
然后,將 OpenCV 和 OpenVINO??動態(tài)鏈接庫所在的位置,添加到path環(huán)境變量中。
C :Program Files(x86)Intelopenvino_2022 .3.0runtimebinintel64Release
C :Program Files(x86)Intelopenvino_2022 .3.0runtimebinintel64Debug
C :Program Files(x86)Intelopenvino_2022 .3.0runtime3rdpartytbbbin
C :opencvbuildx64vc16bin
最后,編譯并運行上述代碼,結(jié)果如下圖所示:
1.6 總結(jié)
本文詳述了從零開始在 Windows 上基于 Visual Studio 配置開發(fā) OpenVINO C++ 推理程序的全過程,并給出了完整的測試程序代碼 test_ov_opencv.cpp。環(huán)境配置成功后,就可以開始用 C++ 編寫 OpenVINO? 推理程序了。