> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenCV 测试应用

本节介绍如何启用 OpenCV 库并运行 OpenCV 测试应用

<img src="https://mintlify.s3.us-west-1.amazonaws.com/qualcomm-prod/zh/Technologies/Vision/images/getting-started-workflow.svg" alt="入门工作流程" />

## **前提条件**

* 按照 [Qualcomm Linux 构建指南](https://dragonwingdocs.qualcomm.com/Key-Documents/Firmware-Guide/build-firmware)中的说明搭建基础环境
* 将最新的软件版本烧录到开发板。
* 建立 SSH 连接：按照[使用 SSH](https://dragonwingdocs.qualcomm.com/Key-Documents/Flash-Guide/how-to-sign-in-with-ssh) 中提到的步骤，在 Permissive 模式下启用 SSH
* 确认目标设备的 `/usr/lib` 中存在 `libopencv_fastcv` 库。

  有时下载 `fastcv_linux_aarch64_2025_07_09.tgz` 会失败，导致无法生成 `libopencv_fastcv` 库。

  如果缺少该库，请[下载最新的 bitbake 文件](https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/opencv/opencv_4.13.0.bb)（`opencv_4.13.0.bb`）并重新编译构建。

  烧录构建后，确认 `/usr/lib` 中存在 `libopencv_fastcv` 库。

<Note>
  **注意**

  由于 [https://github.com/qualcomm-linux/meta-qcom/blob/master/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv\_%25.bbappend](https://github.com/qualcomm-linux/meta-qcom/blob/master/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv_%25.bbappend)，测试应用在构建中默认启用
</Note>

## **启用 OpenCV 库和测试包**

1. 要保留测试二进制文件，请在 `<WORKSPACE>/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv_%.bbappend` 配方文件中包含以下代码：
   ```text theme={null}
   RM_WORK_EXCLUDE += "opencv"
   ```
2. 如果构建已完成编译，则在编译之前必须清理 OpenCV。要清理 OpenCV，请运行以下命令：
   ```bash theme={null}
   bitbake -fc cleanall opencv
   ```
   编译期间不会修改任何代码，因此直接编译不会生成相应的二进制文件。
3. 要编译 OpenCV，请运行以下命令：
   ```bash theme={null}
   bitbake opencv
   ```

库的路径为 `tmp-glibc\sysroots-components\armv8-2a\opencv\usr\lib`。

二进制文件的路径为 `tmp-glibc\work\armv8-2a-qcom-linux\opencv\4.13.0\build\bin`。

## **运行现有测试应用**

要调用 OpenCV API，原生 OpenCV 测试示例可以参考示例应用。使用以下步骤在 Snapdragon 目标设备上调用应用。请编译完整的构建镜像，确保所有库都包含在应用镜像中。

1. 按照 [Qualcomm Linux 构建指南](https://dragonwingdocs.qualcomm.com/Key-Documents/Firmware-Guide/build-firmware)中的说明将镜像烧录到设备上。
   OpenCV 库位于设备上的 `/usr/lib`。
2. 对于测试数据，请克隆 [https://github.com/opencv/opencv\_extra/tree/4.13.0](https://github.com/opencv/opencv_extra/tree/4.13.0) 上的项目。
   ```bash theme={null}
   git clone https://github.com/opencv/opencv_extra.git -b 4.13.0
   ```
3. 为避免在向设备推送测试数据和二进制文件时出现只读错误，请使用设备 IP 地址登录 SSH 终端，并运行以下命令重新挂载设备。
   ```bash theme={null}
   mount -o remount,rw /usr
   ```
4. 使用 `scp` 命令将测试数据推送到首选的主机位置。

   例如：`scp -r {[file]} root@{[IP-ADDR]}:/tmp`
5. 使用 `scp` 命令将所需的测试二进制文件推送到 `/usr/bin`。

   例如：`scp -r {[test]} root@{[IP-ADDR]}:/usr/bin/`
6. 登录 SSH 终端并运行以下命令。
   ```bash theme={null}
   chmod 777 /usr/bin/<opencv_test_bin>
   cd /usr/bin
   export OPENCV_LOG_LEVEL=DEBUG
   export OPENCV_VIDEOIO_DEBUG=1
   export OPENCV_TEST_DATA_PATH=/tmp
   ./<opencv_test_bin> --gtest_output=json:/tmp/results.json
   exit
   ```
   结果存储在 `/tmp/results.json` 中。要更改结果文件名，请修改 `--gtest_output=json:/tmp/{results.json}` 参数。
