步驟如下:
1.硬體環境:Neardi LPA3588開發闆,USB camera(或者其它camera), 軟體環境: RK3588 SDK + Neardi LPA3588 Ubuntu image。
2.在LPA3588開發闆下載下傳rknpu2(GitHub - rockchip-linux/rknpu2)。
3.在LPA3588上面安裝OpenCV, 如下:
sudo apt install libopencv-dev libopencv-videoio-dev libopencv-video-dev libopencv-imgproc-dev libopencv-highgui-dev
4.在此以rknn_ssd_demo上進行更改, 進入rknn_ssd_demo目錄, 修改CMakeLists.txt, 如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL4cTO5cjY1YmNzAjN4M2Y5ADN5QTO1UTO4YmYhlDO1czLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
sample code使用的是OpenCV 3的庫, 在此我們注釋了以便使用我們安裝的OpenCV 4的庫。
5.Rockchip原始的rknn_ssd_demo是對圖檔進行分析, 是以使用單線程; 在此是從攝像頭擷取資料進行物體識别, 單線程有點卡, 是以使用多線程來實作。
首先, 建立queue資料結構, 代碼如附件queue.hpp。
6.修改main.cc:
1). 添加新的頭檔案, 如下:
2). 建立2個全局變量, _idleimgbuf & _imgdata, 用于儲存從camera擷取的image, 并且定義最大長度是300, 如下:
3). 添加線程函數, 從camera讀取資料image, 如下:
這裡我們讀取camera第一幀資料, 以便知道camera frame的大小。
4). 更改輸入參數, 并啟動線程代碼, 如下:
5). 主函數更改讀取資料部分:
完整的代碼, 請參考附件的源代碼。
6). 最後是釋放資源, 如下:
7.編譯及運作rknn_ssd_demo:
./rknn_ssd_demo ./model/RK3588/ssd_inception_v2.rknn 41
這裡的41是/dev/video41裝置的索引, 需要根據實際camera輸入, 設别結果如下: