Skip to main content

实现并部署 OpenCV 示例应用

开发者工作流程

前提条件

使用 FastCV 实现 OpenCV 旋转应用

有关 API 使用详情,请参阅 OpenCV rotate()
  1. 在 Linux 主机上进入 SDK 安装路径,并运行以下命令设置 SDK 环境:
  2. 运行以下命令在 SDK 安装目录中创建并进入 opencv_rotate 目录。
  3. opencv_rotate 目录中创建以下 configure.acMakefile.amopencv_rotate.cpp 文件。
    注意本示例中引用的 JPG 图像来自 https://github.com/opencv/opencv_extra/blob/4.x/testdata/stitching/boat1.jpg,可以更换。
    • configure.ac
    • Makefile.am
    • opencv_rotate.cpp

编译 OpenCV 旋转应用

  1. 运行以下命令。
  2. 运行 make 命令编译应用。
    opencv_rotate_test 测试应用会生成在 opencv_rotate 目录中。

运行 OpenCV 旋转应用

  1. 要推送测试二进制文件,请在主机上运行以下命令。
    注意如果无法复制文件,请使用以下命令重新挂载:
    使用以下命令检查权限:
  2. 运行以下命令切换目录(cd)到测试图像的路径(例如 ./images/boat1.jpg)。
  3. 在设备上创建一个目录(例如 /tmp/test/samples/)用于推送测试图像。 /tmp/test/samples/ 目录也是测试代码中输出图像的位置。请根据你机器上指定的输出位置修改此目录。
  4. 运行以下命令将测试图像推送到设备。
  5. 要在目标设备上开始测试,请运行以下命令。
  6. 要获取结果,请运行以下命令。
    /tmp/test/samples/ 目录是测试代码中输出图像的位置。请根据你指定的输出位置进行修改。 以下是预期结果。

使用 FastCV 扩展实现 OpenCV 缩放应用

有关 API 使用详情,请参阅 OpenCV resize()
  1. SDK 安装完成后,运行以下命令在 SDK 安装目录中创建并进入 opencv_resize_extension 目录。
  2. opencv_resize_extension 目录中创建以下 configure.acMakefile.amopencv_resize_extension.cpp 文件。
    注意本示例中引用的 PNG 图像是 https://github.com/opencv/opencv/blob/4.x/samples/data/box_in_scene.png,如果需要,你也可以使用其他图像。
    • configure.ac
    • Makefile.am
    • opencv_resize_extension.cpp

编译 OpenCV 缩放应用

  1. 运行以下命令。
  2. 运行 make 命令编译应用。
    opencv_resize_test 测试应用会生成在 opencv_resize_extension 目录中。

运行 OpenCV 缩放应用

  1. 要推送测试二进制文件,请在主机上运行以下命令。
  2. 运行以下命令切换目录(cd)到测试图像的路径(例如 ./images/box_in_scene.png)。
  3. 在设备上创建一个目录(例如 /tmp/test/samples/)用于复制测试图像。 /tmp/test/samples/ 目录也是示例代码中输出图像的位置。 请根据你机器上指定的输出位置修改此目录。
  4. 运行以下命令将测试图像复制到设备。
  5. 要在目标设备上开始测试,请运行以下命令。
  6. 要获取结果,请运行以下命令。
    /tmp/test/samples/ 目录是示例代码中输出图像的位置。 请根据你指定的输出位置修改此位置。 以下是预期结果。

OpenCV rotate 函数用法

以 90 度的倍数旋转 2D 数组。rotate() 函数按以下方式之一旋转数组。
  • 顺时针 90 度:rotateCode = ROTATE_90_CLOCKWISE
  • 顺时针 180 度:rotateCode = ROTATE_180
  • 顺时针 270 度:rotateCode = ROTATE_90_COUNTERCLOCKWISE
参数
类型参数描述
InputArraysrc输入数组。
OutputArraydst与源类型相同的输出数组。
使用 ROTATE_180 时尺寸不变,使用 ROTATE_90_CLOCKWISEROTATE_90_COUNTERCLOCKWISE 时行列互换。
intcode用于指定数组旋转方式的枚举;请参阅 RotateFlags 枚举。
RotateFlags:
  • ROTATE_90_CLOCKWISE
  • ROTATE_180
  • ROTATE_90_COUNTERCLOCKWISE
有关 rotate() 的更多信息,请参阅完整 API 文档

OpenCV resize 函数用法

OpenCV resize() 函数的输入是 CVMatrix 形式的源(src)图像。
注意仅支持灰度图像。
输出是 CVMatrix 形式的目标图像。 FastCV 命名空间用于调用 FastCV 扩展 API。 resizeDown() 扩展 API 需要输入图像和目标图像作为参数。
参数
类型参数描述
InputArrayinput输入图像。
OutputArraydst输出图像。
Sizedsize期望的输出图像尺寸。如果为空,则使用 inv_scale_x 和 inv_scale_y 计算。
doubleinv_scale_x宽度的逆缩放系数。如果提供了 dsize,则忽略此参数。
doubleinv_scale_y高度的逆缩放系数。如果提供了 dsize,则忽略此参数。
有关 resize() 的更多信息,请参阅完整 API 文档