通過第一篇文章我們已經了解什么是OpenVINO,它的諸多功能與全應用場景支持人工智能落地的能力。本篇我們將重點介紹OpenVINO開發流程與開發必備的基礎知識與相關API函數對象。
環境配置
在具體介紹OpenVINO開發流程與開發必備基礎知識之前,我們首先需要配置好OpenVINO的開發環境,這里我們以Win10系統下OpenVINO C++/Python SDK開發與應用集成為例來完成整個教程的配置與代碼演示。基于VS2017+OpenVINO2021.02版本的環境配置可以總結為如下幾個步驟:
1. 打開VS2017,新建一個控制臺應用,圖示如下:
圖1
2. 打開屬性管理器
打開屬性管理器,選擇x64/release然后配置包含路徑,庫路徑、通過鏈接器添加lib文件,這部分的配置圖示如下:
包含目錄配置
庫路徑配置
鏈接器:
圖2
opencv_calib3d451.lib
opencv_core451.lib
opencv_dnn451.lib
opencv_features2d451.lib
opencv_flann451.lib
opencv_gapi451.lib
opencv_highgui451.lib
opencv_imgcodecs451.lib
opencv_imgproc451.lib
opencv_ml451.lib
opencv_objdetect451.lib
opencv_photo451.lib
opencv_stitching451.lib
opencv_video451.lib
opencv_videoio451.lib
inference_engine.lib
inference_engine_c_api.lib
inference_engine_ir_reader.lib
inference_engine_legacy.lib
inference_engine_lp_transformations.lib
inference_engine_onnx_reader.lib
inference_engine_preproc.lib
inference_engine_transformations.lib
最后配置環境變量,添加以下環境變量到系統的path中去,圖示如下:
對于開發環境配置環節,如果還有不清楚的,可以參考OpenVINO中文社區的技術自愿者分享的視頻,地址如下:
https://www.bilibili.com/video/BV1Hz4y1U7g6
設備查詢與開發基礎知識
完成上述配置以后,重啟VS2017,創建一個新的cpp文件,添加下面的代碼到cpp文件中
運行結果如下:
圖3
上述控制臺輸出來自InferenceEngine::Core的設備查詢函數GetAvailableDevices,它可以查詢當前系統支持IE推理的硬件支持,該函數如下:
std::vector<:string style="font-size: inherit;color: inherit;line-height: inherit;">InferenceEngine::GetAvailableDevices() const
參數: 無
返回的支持設備的列表vector
下面的就是加載圖像與顯示圖像,使用的兩個函數來自OpenVINO中的OpenCV組件支持,兩個相關函數如下:
讀取圖像
Mat cv::imread(
const String & filename,
int flags = IMREAD_COLOR
)
參數 filename表示文件路徑(包含文件名)
第二個參數為默認參數
加載成功返回的圖像像素的矩陣數據結構Mat,默認讀取加載為彩色圖像,三個通道順序為BGR。
顯示圖像
void cv::imshow(
const String & winname,
InputArray mat
)
參數 winname表示窗口名稱,本例中為“輸入窗口”
參數 mat表示圖像矩陣Mat(顯示圖像的內存表示)
最終執行結果圖上圖3所示。對上述代碼,我們可以通過進一筆的簡化,要知道在C++11中,聲明類型可以自動識別,通過auto來表示可以避免代碼過長,同時支持for循環的時候通過auto自動識別每個item的類型,所以上述查詢設備與打印部分的代碼:
nferenceEngine::Core ie;
std::vector<:string style="font-size: inherit;color: inherit;line-height: inherit;">devices = ie.GetAvailableDevices();
for (std::string name : devices) {
std::cout << "device name: " << name << std::endl;
}
改寫為如下的代碼:
InferenceEngine::Core ie;
auto devices = ie.GetAvailableDevices();
for (auto name : devices) {
std::cout << "device name: " << name << std::endl;
}
這樣看上去代碼就會比之前的整潔更加直觀一點。在OpenVINO SDK C++的開發中,有很多類別的聲明都很長,我們可以通過使用C++11支持的自動類型識別關鍵字auto來減少不必要的代碼書寫,提高編碼效率。此外類InferenceEngine::Core類是表示整個IE引擎的實例,支持從模型加載、輸入與輸出格式獲取與設置、模型的推理與后處理等一系列的操作。關于如何使用InferenceEngine::Core實現模型推理的流程與相關API方法函數解釋。
編輯:jq
-
C++
+關注
關注
21文章
2084瀏覽量
73297 -
代碼
+關注
關注
30文章
4668瀏覽量
67752 -
SDK
+關注
關注
3文章
1004瀏覽量
45406
原文標題:OpenVINO開發配置與必備基礎知識
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論