![]() |
OpenCV 4.12.0
開源計算機視覺
|
| 相容性 | OpenCV >= 4.11.0 |
本文件旨在指導開發者在高通晶片組(採用 ARM64 架構)上啟用 FastCV 加速 OpenCV。目前,在非高通晶片組或除 高通 Linux 之外的 Linux 平臺上啟用帶有 FastCV 後端的 OpenCV 不在本文件範圍內。
FastCV 為計算機視覺應用程式開發者提供兩個主要功能:
FastCV 以統一二進位制檔案的形式釋出,即一個包含演算法兩種實現的二進位制檔案:
與其他 CV 庫相比,FastCV 庫是高通專有的,可在各種硬體上提供更快的 CV 演算法實現。
OpenCV 和 FastCV 的整合透過兩種方式實現:
請按照 OpenCV 編譯的 Wiki 頁面進行操作:https://github.com/opencv/opencv/wiki/Custom-OpenCV-Android-SDK-and-AAR-package-build
將 OpenCV 儲存庫程式碼克隆到工作區後,請將 -DWITH_FASTCV=ON 標誌新增到 cmake 變數中,如下所示,新增到 opencv/platforms/android/default.config.py 中的 arm64 條目,或建立一個新的條目,其中包含啟用 FastCV HAL 和/或擴充套件編譯的選項。
安裝 eSDK 後,設定 ESDK_ROOT
將 SDK 工具和庫新增到您的環境中
如果您遇到以下訊息
只需取消設定您的主機 LD_LIBRARY_PATH 環境變數:unset LD_LIBRARY_PATH。
克隆 OpenCV 儲存庫
將 OpenCV 主儲存庫和可選的 opencv_contrib 儲存庫克隆到任何目錄中(不需要在 SDK 目錄中)。
構建 OpenCV
建立一個構建目錄,導航到該目錄,並在那裡使用 CMake 構建專案
如果 FastCV 庫已更新,請替換位於以下位置的舊 FastCV 庫
使用在以下位置下載的最新 FastCV 庫
驗證
將 OpenCV 庫、測試二進位制檔案和測試資料推送到目標裝置。執行 OpenCV 一致性或效能測試。執行時,如果缺少 libwebp.so.7 庫,請在以下路徑中找到該庫並將其推送到目標裝置
基於 FastCV 的 OpenCV HAL API 列表
| OpenCV 模組 | OpenCV API | 用於 OpenCV 加速的底層 FastCV API |
|---|---|---|
| IMGPROC | medianBlur | fcvFilterMedian3x3u8_v3 |
| sobel | fcvFilterSobel3x3u8s16 | |
| fcvFilterSobel5x5u8s16 | ||
| fcvFilterSobel7x7u8s16 | ||
| boxFilter | fcvBoxFilter3x3u8_v3 | |
| fcvBoxFilter5x5u8_v2 | ||
| fcvBoxFilterNxNf32 | ||
| adaptiveThreshold | fcvAdaptiveThresholdGaussian3x3u8_v2 | |
| fcvAdaptiveThresholdGaussian5x5u8_v2 | ||
| fcvAdaptiveThresholdMean3x3u8_v2 | ||
| fcvAdaptiveThresholdMean5x5u8_v2 | ||
| pyrDown | fcvPyramidCreateu8_v4 | |
| cvtColor | fcvColorRGB888toYCrCbu8_v3 | |
| fcvColorRGB888ToHSV888u8 | ||
| gaussianBlur | fcvFilterGaussian5x5u8_v3 | |
| fcvFilterGaussian3x3u8_v4 | ||
| warpPerspective | fcvWarpPerspectiveu8_v5 | |
| Canny | fcvFilterCannyu8 | |
| CORE | lut | fcvTableLookupu8 |
| norm | fcvHammingDistanceu8 | |
| multiply | fcvElementMultiplyu8u16_v2 | |
| transpose | fcvTransposeu8_v2 | |
| fcvTransposeu16_v2 | ||
| fcvTransposef32_v2 | ||
| meanStdDev | fcvImageIntensityStats_v2 | |
| flip | fcvFlipu8 | |
| fcvFlipu16 | ||
| fcvFlipRGB888u8 | ||
| rotate | fcvRotateImageu8 | |
| fcvRotateImageInterleavedu8 | ||
| multiply | fcvElementMultiplyu8 | |
| fcvElementMultiplys16 | ||
| fcvElementMultiplyf32 | ||
| addWeighted | fcvAddWeightedu8_v2 | |
| subtract | fcvImageDiffu8f32_v2 | |
| SVD & solve | fcvSVDf32_v2 | |
| gemm | fcvMatrixMultiplyf32_v2 | |
| fcvMultiplyScalarf32 | ||
| fcvAddf32_v2 |
基於 FastCV 的 OpenCV 擴充套件 API 列表
這些 OpenCV 擴充套件 API 在 cv::fastcv 名稱空間下實現。
| OpenCV 擴充套件 API | 用於 OpenCV 加速的底層 FastCV API |
|---|---|
| matmuls8s32 | fcvMatrixMultiplys8s32 |
| clusterEuclidean | fcvClusterEuclideanu8 |
| FAST10 | fcvCornerFast10InMaskScoreu8 |
| fcvCornerFast10InMasku8 | |
| fcvCornerFast10Scoreu8 | |
| fcvCornerFast10u8 | |
| FFT | fcvFFTu8 |
| IFFT | fcvIFFTf32 |
| fillConvexPoly | fcvFillConvexPolyu8 |
| houghLines | fcvHoughLineu8 |
| moments | fcvImageMomentsu8 |
| fcvImageMomentss32 | |
| fcvImageMomentsf32 | |
| runMSER | fcvMserInit |
| fcvMserNN8Init | |
| fcvMserExtu8_v3 | |
| fcvMserExtNN8u8 | |
| fcvMserNN8u8 | |
| fcvMserRelease | |
| remap | fcvRemapu8_v2 |
| remapRGBA | fcvRemapRGBA8888BLu8 |
| fcvRemapRGBA8888NNu8 | |
| resizeDown | fcvScaleDownBy2u8_v2 |
| fcvScaleDownBy4u8_v2 | |
| fcvScaleDownMNInterleaveu8 | |
| fcvScaleDownMNu8 | |
| meanShift | fcvMeanShiftu8 |
| fcvMeanShifts32 | |
| fcvMeanShiftf32 | |
| bilateralRecursive | fcvBilateralFilterRecursiveu8 |
| thresholdRange | fcvFilterThresholdRangeu8_v2 |
| bilateralFilter | fcvBilateralFilter5x5u8_v3 |
| fcvBilateralFilter7x7u8_v3 | |
| fcvBilateralFilter9x9u8_v3 | |
| calcHist | fcvImageIntensityHistogram |
| gaussianBlur | fcvFilterGaussian3x3u8_v4 |
| fcvFilterGaussian5x5u8_v3 | |
| fcvFilterGaussian5x5s16_v3 | |
| fcvFilterGaussian5x5s32_v3 | |
| fcvFilterGaussian11x11u8_v2 | |
| filter2D | fcvFilterCorrNxNu8 |
| fcvFilterCorrNxNu8s16 | |
| fcvFilterCorrNxNu8f32 | |
| sepFilter2D | fcvFilterCorrSepMxNu8 |
| fcvFilterCorrSep9x9s16_v2 | |
| fcvFilterCorrSep11x11s16_v2 | |
| fcvFilterCorrSep13x13s16_v2 | |
| fcvFilterCorrSep15x15s16_v2 | |
| fcvFilterCorrSep17x17s16_v2 | |
| fcvFilterCorrSepNxNs16 | |
| sobel3x3u8 | fcvImageGradientSobelPlanars8_v2 |
| sobel3x3u8 | fcvImageGradientSobelPlanars16_v2 |
| sobel3x3u8 | fcvImageGradientSobelPlanars16_v3 |
| sobel3x3u8 | fcvImageGradientSobelPlanarf32_v2 |
| sobel3x3u8 | fcvImageGradientSobelPlanarf32_v3 |
| sobel | fcvFilterSobel3x3u8_v2 |
| fcvFilterSobel3x3u8s16 | |
| fcvFilterSobel5x5u8s16 | |
| fcvFilterSobel7x7u8s16 | |
| DCT | fcvDCTu8 |
| iDCT | fcvIDCTs16 |
| sobelPyramid | fcvPyramidAllocate |
| fcvPyramidAllocate_v2 | |
| fcvPyramidAllocate_v3 | |
| fcvPyramidSobelGradientCreatei8 | |
| fcvPyramidSobelGradientCreatei16 | |
| fcvPyramidSobelGradientCreatef32 | |
| fcvPyramidDelete | |
| fcvPyramidDelete_v2 | |
| fcvPyramidCreatef32_v2 | |
| fcvPyramidCreateu8_v4 | |
| trackOpticalFlowLK | fcvTrackLKOpticalFlowu8_v3 |
| fcvTrackLKOpticalFlowu8 | |
| warpPerspective2Plane | fcv2PlaneWarpPerspectiveu8 |
| warpPerspective | fcvWarpPerspectiveu8_v5 |
| arithmetic_op | fcvAddu8 |
| fcvAdds16_v2 | |
| fcvAddf32 | |
| fcvSubtractu8 | |
| fcvSubtracts16 | |
| integrateYUV | fcvIntegrateImageYCbCr420PseudoPlanaru8 |
| normalizeLocalBox | fcvNormalizeLocalBoxu8 |
| fcvNormalizeLocalBoxf32 | |
| merge | fcvChannelCombine2Planesu8 |
| fcvChannelCombine3Planesu8 | |
| fcvChannelCombine4Planesu8 | |
| split | fcvDeinterleaveu8 |
| fcvChannelExtractu8 | |
| warpAffine | fcvTransformAffineu8_v2 |
| fcvTransformAffineClippedu8_v3 | |
| fcv3ChannelTransformAffineClippedBCu8 |
基於 FastCV QDSP 的 OpenCV 擴充套件 API 列表: 這些 OpenCV 擴充套件 API 在 cv::fastcv::dsp 名稱空間下實現。此名稱空間提供了最佳化的實現,利用 FastCV 的 Q 字尾 API 使用 QDSP(高通數字訊號處理器)加速。這些函式需要 DSP 初始化 (fcvQ6Init)。
| OpenCV 擴充套件 API | 用於 OpenCV 加速的底層 FastCV API |
|---|---|
| filter2D | fcvFilterCorr3x3s8_v2Q |
| fcvFilterCorrNxNu8Q | |
| fcvFilterCorrNxNu8s16Q | |
| fcvFilterCorrNxNu8f32Q | |
| FFT | fcvFFTu8Q |
| IFFT | fcvIFFTf32Q |
| fcvdspinit | fcvQ6Init |
| fcvdspdeinit | fcvQ6DeInit |
| Canny | fcvFilterCannyu8Q |
| sumOfAbsoluteDiffs | fcvSumOfAbsoluteDiffs8x8u8_v2Q |
| thresholdOtsu | fcvFilterThresholdOtsuu8Q |
如何使用基於 FastCV QDSP 的 OpenCV 擴充套件 API
本節概述了使用 FastCV 在 QDSP(高通數字訊號處理器)上加速的 OpenCV 擴充套件 API 所需的基本步驟。
參考示例:參考在 opencv_contrib 儲存庫中使用 OpenCV 擴充套件 API 的有效測試用例:opencv_contrib/modules/fastcv/test/test_thresh_dsp.cpp