Skip to main content
Version: Current

二、系统编译

TACO-SDK 是一套完整的开发工具包,提供了丰富的视频处理、计算机视觉和AI推理功能。该 SDK 包含了必要的库文件、工具和示例,使开发者能够快速构建和部署视频分析应用。

2.1 SDK 架构说明

其目录架构及其作用如下所示:

taco-sdk/
├── ta-base/ # 基础运行库
│ ├── ta-runtime/ # 运行时库
│ │ └── lib/ # 运行时库文件
│ │ └── include/ # 头文件
│ └── ta-cv/ # 计算机视觉相关库
│ ├── lib/ # 计算机视觉库文件
│ └── include/ # 计算机视觉库头文件
├── ta-vsp/ # 视频处理相关组件
│ ├── README.md # 视频处理组件说明文档
│ ├── ta-opencv/ # OpenCV 相关库和工具
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ ├── ta-ffmpeg/ # FFmpeg 相关库和工具
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ ├── ta-samples/ # 示例代码
│ │ ├── npu_infer_sample/ # NPU 推理示例
│ │ │ ├── Makefile # 编译脚本
│ │ │ └── dual_core_fps.c # 示例源代码
│ │ ├── single_buffer_pipeline_sample # 单 vb 管道处理示例
│ │ │ ├── Makefile # 编译脚本
│ │ │ └── single_buffer_pipeline.cpp # 示例源代码
│ │ ├── taco_40pin_sample # 40pin 示例
│ │ │   └── 40pin_sample.py # 40pin function 示例
│ │ ├── taco_ffmpeg_decode_sample # FFmpeg 解码示例
│ │ │ ├── Makefile # 编译脚本
│ │ │ └── taco_decoder_sample.cpp # 示例源代码
│ │ ├── taco_ffmpeg_encode_sample # FFmpeg 视频解码示例
│ │ │ ├── Makefile # 编译脚本
│ │ │ └── taco_encoder_sample.cpp # 示例源代码
│ │ ├── tacv_sample # 计算机视觉示例
│ │ │ ├── CMakeLists.txt # CMake 构建文件
│ │ │ ├── tacv_sample_crop.cpp # 裁剪示例
│ │ │ ├── tacv_sample_csc.cpp # 格式转换示例
│ │ │ ├── tacv_sample_jpeg_dec.cpp # jpeg 解码示例
│ │ │ ├── tacv_sample_jpeg_enc.cpp # jpeg 编码示例
│ │ │ ├── tacv_sample_resize.cpp # 缩放示例
│ │ │ ├── tacv_sample_resize_stride.cpp # 缩放 + stride 示例
│ │ │ └── tacv_sample_yuv2rgb.cpp # 色彩转换示例
│ │ ├── tademo_sample # NPU推理性能
│ │ │ ├── CMakeLists.txt # 编译脚本
│ │ │ ├── README.md # 说明文档
│ │ │ ├── samples # 示例源代码
│ │ │ ├── soc240401_riscv64 # 共版示例依赖的库
│ │ │ └── toolchain.cmake # 工具链设置脚本
│ │ ├── taopencv_sample # OpenCV 示例
│ │ │ ├── Makefile # 编译脚本
│ │ │ └── taopencv_sample.cpp # 示例源代码
│ │ ├── yolov5_tracker_sample # 单 pipeline 串联解码,推理,编码
│ │ │ ├── CMakeLists.txt # 编译脚本
│ │ │ ├── data # 数据
│ │ │ ├── libs # 示例源代码库
│ │ │ ├── README.md # 简要说明
│ │ │ ├── samples # 示例源代码
│ │ │ ├── soc240401_riscv64 # 共版示例依赖的库
│ │ │ └── toolchain.cmake # 工具链设置脚本
│ ├── ta-unify-9200O/ # NPU 统一推理接口库
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ ├── ta-viplite-9200o/ # NPU 低层驱动库
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ ├── ta-sys/ # 系统相关组件
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ ├── ta-libenc/ # 视频编码库
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ ├── ta-libdec/ # 视频解码库
│ │ ├── lib/ # 库文件
│ │ └── include/ # 头文件
│ └── ta-pipeworks/ # 管道处理框架
│ └── lib/ # 库文件
├── ta-docker-image/ # Docker 镜像相关文件和说明
│ └── README.md # Docker 镜像使用说明
├── ta-image/ # 系统镜像工具
│ ├── README.md # 镜像工具说明文档
│ ├── install_sdk_img.sh # 固件下载脚本
│ └── update/ # 更新工具
│ └── mk-tf.sh # 系统镜像制作和烧录工具
├── start_tanntc_docker.sh # 启动 NPU 推理编译环境 Docker 容器脚本
├── start_workshop_docker.sh # 启动 SDK 编译工作环境 Docker 容器脚本
└── README.md # 当前 SDK 总体说明文档

2.2 SDK交叉编译

2.2.1 NPU sample

  1. 在 docker 中,进入 npu_infer_sample 目录,输入 "make" 开始编译,即可在 npu_infer_sample 目录下获得板端可执行程序 "npu_infer"
cd  ta-vsp/ta-samples/npu_infer_sample
make
  1. 通过 scp 命令将程序发送到板端的 /usr/bin 目录下
scp -r npu_infer root@192.168.56.171:/usr/bin/ # IP 地址按照实际情况更改
  1. 登录到板端的 /usr/testdata/npu 目录,查看并确定一个网络模型(例如 inception_v3),进入对应目录,里边会有一个 sample.txt 文件,它描述了模型信息和输入输出配置,输入以下命令执行一次推理
root@taco-mes20:/usr/testdata/npu/inception_v3# npu_infer -s sample.txt 
config file read network count=1
create network file_path = ./network_binary.nb
create network status = 0, core_mask =1
FPS -Core0: 0, Core1: 1
destroy test resource task_count=1

2.2.2 tademo Sample

tademo 包含了解码和推理2个过程,是个综合的 Sample。

  1. 在 docker 中,进入 tademo_sample 目录,使用以下命令进行编译
cd ta-vsp/ta-samples/tademo_sample
mkdir build
cd build
cmake ../ -DTARGET_ARCH=soc -DTACO_SDK_SOC=/taco-sdk/ta-vsp/ta-samples/tademo_sample/soc240401_riscv64 -DCMAKE_TOOLCHAIN_FILE=/taco-sdk/ta-vsp/ta-samples/tademo_sample/toolchain.cmake
make -j16

编译结果显示如下:

tps@tps-sdk:/taco-sdk/ta-vsp/ta-samples/tademo_sample/build# cmake ../ -DTARGET_ARCH=soc -DTACO_SDK_SOC=/taco-sdk/ta-vsp/ta-samples/tademo_sample/soc240401_riscv64/ -DCMAKE_TOOLCHAIN_FILE=/taco-sdk/ta-vsp/ta-samples/tademo_sample/toolchain.cmake 
-- Toolchain file loaded: /taco-sdk/ta-vsp/ta-samples/tademo_sample/toolchain.cmake
-- toolchain.Using C Compiler: /toolchain/bin/riscv64-unknown-linux-gnu-gcc
-- toolchain.Using CXX Compiler: /toolchain/bin/riscv64-unknown-linux-gnu-g++
-- Toolchain file loaded: /taco-sdk/ta-vsp/ta-samples/tademo_sample/toolchain.cmake
-- toolchain.Using C Compiler: /toolchain/bin/riscv64-unknown-linux-gnu-gcc
-- toolchain.Using CXX Compiler: /toolchain/bin/riscv64-unknown-linux-gnu-g++
-- The C compiler identification is GNU 14.1.1
-- The CXX compiler identification is GNU 14.1.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /toolchain/bin/riscv64-unknown-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /toolchain/bin/riscv64-unknown-linux-gnu-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- TARGET_ARCH: soc
-- TACO_SDK_SOC: /taco-sdk/ta-vsp/ta-samples/tademo_sample/soc240401_riscv64/
-- CMAKE_TOOLCHAIN_FILE: /taco-sdk/ta-vsp/ta-samples/tademo_sample/toolchain.cmake
-- tademo.CMAKE_BINARY_DIR: /taco-sdk/ta-vsp/ta-samples/tademo_sample/build
-- tademo.CMAKE_SOURCE_DIR: /taco-sdk/ta-vsp/ta-samples/tademo_sample
-- tademo.CMAKE_SOURCE_DIR: /taco-sdk/ta-vsp/ta-samples/tademo_sample
-- tademo.DESTINATION:
-- tademo.CMAKE_INSTALL_PREFIX: /usr/local
PROJECT_ROOT = /taco-sdk/ta-vsp/ta-samples/tademo_sample
-- Configuring done
-- Generating done
-- Build files have been written to: /taco-sdk/ta-vsp/ta-samples/tademo_sample/build

tps@tps-sdk:/taco-sdk/ta-vsp/ta-samples/tademo_sample/build# make -j16
[ 50%] Building CXX object samples/CMakeFiles/tademo.dir/src/demo.cpp.o
/taco-sdk/ta-vsp/ta-samples/tademo_sample/samples/src/demo.cpp: In function 'int main(int, char**)':
/taco-sdk/ta-vsp/ta-samples/tademo_sample/samples/src/demo.cpp:286:24: warning: 'void av_register_all()' is deprecated [-Wdeprecated-declarations]
286 | av_register_all();
| ~~~~~~~~~~~~~~~^~
In file included from /taco-sdk/ta-vsp/ta-samples/tademo_sample/samples/./include/demo_function.h:15,
from /taco-sdk/ta-vsp/ta-samples/tademo_sample/samples/src/demo.cpp:1:
/taco-sdk/ta-vsp/ta-samples/tademo_sample/./soc240401_riscv64/include/ffmpeg/libavformat/avformat.h:2050:6: note: declared here
2050 | void av_register_all(void);
| ^~~~~~~~~~~~~~~
[100%] Linking CXX executable /taco-sdk/ta-vsp/ta-samples/tademo_sample/samples/build/tademo
/toolchain/bin/../lib/gcc/riscv64-unknown-linux-gnu/14.1.1/../../../../riscv64-unknown-linux-gnu/bin/ld: warning: libtaco_jpegdec.so, needed by /taco-sdk/ta-vsp/ta-ffmpeg/lib/libavcodec.so, not found (try using -rpath or -rpath-link)
[100%] Built target tademo

编译成功后,会在 tademo_sample/samples/build 目录下生成可执行文件 tademo。

  1. 将 docker 上的 tademo 程序拷贝到板端的 /usr/bin 目录,执行
scp -r tademo root@192.168.56.171:/usr/bin/ # IP 地址按照实际情况更改
  1. 登录到板端,在终端上执行
root@taco-mes20:/usr/bin#tademo 1
create network file_path = /usr/testdata/taco-pipeline-1.0.0/network_binary.nb
ta_runtime_load_model_from_file
Model loaded and network prepared
YoloxInference::set_input.st.m_input_num=2
YoloxInference::set_input.ta_runtime_set_input_cva.st
YoloxInference::set_input.ta_runtime_set_input_cva.ed
YoloxInference::set_input.ed ----00
..................
VideoDecFFM::resizeFrame.st
resize.blk.st
2025-11-11 19:01:03ERR0R [2276] ta_cv_get_pp_resize_algorithm() 813:Resize filter not support.
[TB] Invalid pp parameters
2025-11-11 19:01:03 ERROR[2276] ta_cv_pp_basic() 1032:PP0 channel excute failed.
2025-11-11 19:01:03 WARN [2276] ta_cv_image_resize() 436:ta_cv_image_resize_hardware failed,using CPU to execute resize
Pre[PP1.duration=3894
resize.blk.cost=11113
Predict[NPU].duation=7428 us
at=257:302:454:427,id=2,prob=0.751940
at=219:305:262:334,id=2,prob=0.669507
at=136:294:173:385,id=0,prob=0.589986
at=424:293:570:350,id=2,prob=0.588738
at=33:290:74:399,id=0,prob=0.584781
Post[CPU].duation=458 us,count=5
..................
predict_file.end information:
Total Frame Count=201
Pre[PP] avgcost= 28765 us (34 fps),Infer[NPU]avgcost= 7432 us (134 fps),Post[CPU] avgcost= 7117 us (140 fps)
  1. 分析运行结果

对屏幕打印的最后一段 log 进行分析,板端实际跑出的性能结果如下:

Pre[PP] avgcost= 28765 us (34 fps),     #用PP硬件做 resize 操作的耗时,及等效帧率
Infer[NPU] avgcost= 7432 us (134 fps), #用 NPU 做推理的软件接口时间,及等效帧率
Post[CPU] avgcost= 7117 us (140 fps) #用 CPU 推理后处理时间,及等效帧率

值得说明的是,NPU推理时间 7432 us 是每次调用推理接口的耗时,它略大于纯硬件推理时间。如果只考察一个推理线程(不含后处理),134 fps(per cluster @ 1 GHz)就是该线程能够输出的最大帧率;如果考察多个线程同时工作的情况,则软件开销大部分可以多线程被隐藏掉,总的推理帧率能够达到 182 fps(per cluster @ 1 GHz)。

2.2.3 解码 Sample

  1. 在 docker 中,进入 taco_ffmpeg_decode_sample 目录,输入 "make" 开始编译,即可获得板端可执行程序 "taco_decoder_sample"
cd  ta-vsp/ta-samples/taco_ffmpeg_decode_sample
make
  1. 通过 scp 命令将程序发送到板端的 /usr/testdata/vdec 目录下
scp -r taco_decoder_sample root@192.168.56.171:/usr/testdata/vdec # IP 地址按照实际情况更改
  1. 登录到板端的 /usr/testdata/vdec 目录,目录下有一个视频文件 input.mp4,它用于测试解码功能
./taco_decoder_sample
  1. 解码停止后,会在当前目录下生成 result.yuv 文件,它包含一组分辨率为 640x640 的 NV12 视频帧

  2. 将 result.yuv 拷回主机,用 ffmpeg 提供的 ffplay 工具进行播放,观察图像正确性。播放命令为

ffplay -video_size 640x640 -pixel_format nv12  -i result.yuv

2.2.4 编码 Sample

  1. 在 docker 中,进入 taco_ffmpeg_encode_sample 目录,输入 "make" 开始编译,即可获得板端可执行程序 "taco_encoder_sample"
cd  ta-vsp/ta-samples/taco_ffmpeg_encode_sample
make
  1. 通过 scp 命令将程序发送到板端的 /usr/testdata/venc 目录下
scp -r taco_encoder_sample root@192.168.56.171:/usr/testdata/venc # IP 地址按照实际情况更改
  1. 登录到板端的 /usr/testdata/venc 目录
./taco_encoder_sample
  1. 编码停止后,会在当前目录下生成 output_yuv420p_10f.h264 文件,它是 h264 格式的文件

  2. 将 output_yuv420p_10f.h264 拷回主机,用 ffmpeg 提供的 ffplay 工具进行播放,观察图像正确性。播放命令为

ffplay -f h264 output_yuv420p_10f.h264

2.2.5 taCV Sample

  1. 在 docker 中,进入 tacv_sample 目录,创建 build 文件夹并进入,输入 "cmake .. && make" 开始编译,即可获得板端可执行程序 "tacv_sample_resize" 等
cd ta-vsp/ta-samples/tacv_sample
mkdir build && cd build
cmake .. && make
  1. 通过 scp 命令将想要运行的程序发送到板端的 /usr/testdata/libcv 目录下
scp -r tacv_sample_resize root@192.168.56.171:/usr/testdata/libcv # IP 地址按照实际情况更改
  1. 登录到板端的 /usr/testdata/libcv 目录
./tacv_sample_resize sample_src/LenaNV12.bin 512 512 256 256
  1. 运行结束后当前目录会生成 resize_out.bin 文件,它是 nv12 格式的二进制数据文件

  2. 将 resize_out.bin 拷回主机,用 ffmpeg 提供的 ffplay 工具进行播放,观察图像正确性。播放命令为

ffplay -f rawvideo -pixel_format nv12 -video_size 256x256 -framerate 25 resize_out.bin

2.2.6 taOpenCV Sample

  1. 在 docker 中,进入 taopencv_sample 目录,输入 "make" 开始编译,即可获得板端可执行程序 "taopencv_sample" 等
make
  1. 通过 scp 命令将想要运行的程序发送到板端的 /usr/testdata/libcv 目录下
scp -r taopencv_sample root@192.168.56.171:/usr/testdata/libcv # IP 地址按照实际情况更改
  1. 登录到板端的 /usr/testdata/libcv 目录,执行命令
./taopencv_sample sample_src/Lena.jpg 256 256
  1. 运行结束后当前目录会生成 output.jpg 文件,它是 jpeg 格式的文件

  2. 将 output.jpg 拷回主机,可以直接播放

2.2.7 40pin Sample

  1. 在 docker中,进入taco_40pin_sample目录,存在 40pin_sample.py 脚本。

  2. 通过 scp 命令将想要运行的程序发送到板端的 /usr/testdata/ 目录下

scp -r 40pin_sample.py root@192.168.56.171:/usr/testdata/ # IP 地址按照实际情况更改
  1. 登录到板端的/usr/testdata/目录,执行命令, 支持spi 、iic、serial 、RS485、RS232、CAN、 RELAY、GPIO等
python3 40pin_sample.py -t serial --rs232 --port 1                    #RS232 测试
python3 40pin_sample.py -t serial --rs485 --send-port 2 --recv-port 8 #RS485 测试
python3 40pin_sample.py -t relay #RELAY 测试
python3 40pin_sample.py -t can --can-send #CAN发送 测试
python3 40pin_sample.py -t can --can-receive #CAN接收 测试
python3 40pin_sample.py -t gpio #GPIO 测试
  1. 期待输出

下面将对其输出进行说明,serial、CAN、relay 及 GPIO 。

1.serial 测试 从打印的串口设备(其中 /dev/ttyPS0 是系统调试口,不建议对它进行测试,除非你完全明白它的作用)中选择总线号和片选号作为输入选项, 按回车键确认,并输入波特率参数

在AIBOX开发板上串口支持RS485与RS232协议,其中/dev/ttyPS2与/dev/ttyPS8为RS485,/dev/ttyPS1为RS232

1.1 RS232 环回

用于验证单个RS232串口的发送与接收功能(需硬件短接TX/RX引脚)。 支持配置串口号、波特率与数据传输内容。

python3 40pin_sample.py -t serial --rs232 --port 1 --baudrate 115200 --data "Custom Test"

输出示例:


===== Starting RS232 Loopback Test =====
Successfully opened serial port: /dev/ttyPS1
Parameters: Baudrate=115200, Data bits=8, Parity=N, Stop bits=1
Test data: Custom Test

[00:04:39.932] Sent data (11 bytes):
Hex: 43 75 73 74 6f 6d 20 54 65 73 74
ASCII: Custom Test

[00:04:40.133] Received data (11 bytes):
Hex: 43 75 73 74 6f 6d 20 54 65 73 74
ASCII: Custom Test
Test: Success

===== RS232 Loopback Test Result =====
Total tests: 1, Success: 1, Failed: 0
Serial port closed

1.2 RS485 互联

用于验证两个RS485设备之间的互联通信功能(需硬件连接A/B线)。

用户通过--send-port--recv-port指定发送端和接收端端口(支持编号或路径),脚本自动解析并建立连接:

python3 40pin_sample.py -t serial --rs485 --send-port 2 --recv-port 8 --baudrate 9600

输出示例:


===== Starting RS485 Interconnect Test =====
Successfully opened serial port: /dev/ttyPS2
Parameters: Baudrate=9600, Data bits=8, Parity=N, Stop bits=1
Successfully opened serial port: /dev/ttyPS8
Parameters: Baudrate=9600, Data bits=8, Parity=N, Stop bits=1
Test data: RS485 Interconnect Test
Sending port: /dev/ttyPS2, Receiving port: /dev/ttyPS8

[00:02:56.014] Sent data (23 bytes):
Hex: 52 53 34 38 35 20 49 6e 74 65 72 63 6f 6e 6e 65 63 74 20 54 65 73 74
ASCII: RS485 Interconnect Test

[00:02:56.516] Received data (23 bytes):
Hex: 52 53 34 38 35 20 49 6e 74 65 72 63 6f 6e 6e 65 63 74 20 54 65 73 74
ASCII: RS485 Interconnect Test
Test: Success

===== RS485 Interconnect Test Result =====
Total tests: 1, Success: 1, Failed: 0
Serial port closed
Serial port closed

2.继电器测试

通过GPIO控制继电器的开关状态(ON/OFF),并验证输出电平是否符合预期,对应硬件继电器的吸合与断开功能测试。

直接通过命令行启动测试:

python3 40pin_sample.py -t relay

输出示例:

===== Starting Relay Test =====
Exporting GPIO276...
Setting GPIO276 as output...

Testing relay ON (set value 1)...
Relay ON test: Success

Testing relay OFF (set value 0)...
Relay OFF test: Success

===== Relay Test Result =====
All relay tests passed

3.can总线收发测试

CAN(Controller Area Network)测试功能用于验证CAN总线的发送和接收功能是否正常工作。该功能支持配置CAN接口参数、发送测试帧以及监听接收CAN消息,适用于测试CAN总线通信链路的完整性。

CAN测试通过以下步骤实现: 配置CAN接口(设置为 DOWN 状态 -> 配置波特率 -> 设置为 UP 状态) 创建并绑定CAN原始套接字 发送测试:构造标准CAN帧并发送到总线上 接收测试:监听总线上的CAN消息并统计接收数量

支持配置CAN总线接口以及比特率,对应的参数为 --can-interface 和 --can-bitrate

can总线发送命令:

python 40pin_sample.py -t can --can-send --can-interface can0 --can-bitrate 500000

执行流程:

  1. 配置can0接口为500000波特率
  2. 创建CAN套接字并绑定到can0
  3. 发送测试数据帧(ID=0x123,数据=[0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07])
  4. 输出发送结果并关闭套接字

can总线接收命令:

python 40pin_sample.py -t can --can-receive --can-interface can0 --can-duration 30

执行流程:

  1. 配置can0接口为指定波特率
  2. 创建CAN套接字并绑定到can0
  3. 在30秒内监听CAN消息(最多接收20条)
  4. 输出接收统计结果并关闭套接字

4.gpio测试

该工具用于对指定域(CPU/RTC/SAP)的GPIO进行手动高低电平控制,IN2对应rtc域gpio5, IN1对应rtc域gpio6,OUT1对应rtc域12,OUT2对应cpu域98

python 40pin_sample.py -t gpio

交互流程

===== Starting GPIO Manual Control Test =====
Please enter GPIO domain (cpu/rtc/sap): cpu # 输入域
Please enter base GPIO number (domain cpu): 98 # 输入基础GPIO号
GPIO manual control mode:
Commands: '1' to set high, '0' to set low, 'q' to quit
Enter command (1/0/q): 1 # 输入1拉高
GPIO205 set to 1, verified value: 1 # 验证状态为高
Enter command (1/0/q): 0 # 输入0拉低
GPIO205 set to 0, verified value: 0 # 验证状态为低
Enter command (1/0/q): q # 输入q退出
Exiting GPIO control

===== GPIO Test Completed =====

2.2.8 VB 跨模块流转 Sample

  1. 在 docker 中,进入 single_buffer_pipeline_sample 目录,输入 "make" 开始编译,即可获得板端可执行程序 "single_buffer_pipeline"。
cd ta-vsp/ta-samples/single_buffer_pipeline_sample
make
  1. 通过 scp 命令将想要运行的程序发送到板端的 /usr/testdata/ 目录下
scp single_buffer_pipeline root@192.168.56.171:/usr/testdata/ # IP 地址按照实际情况更改
  1. 登录到板端的 /usr/testdata/ 目录,执行命令
./single_buffer_pipeline
  1. 运行结束后当前目录会生成两个 nv12 格式的二进制文件,result.yuv 与 resize_out.bin ,前者是解码帧数据,后者是解码帧输入经过 tacv resize 后保存的数据

  2. 将 result.yuv 与 resize_out.bin 拷贝到本机,用 ffmpeg 提供的 ffplay 工具进行播放,观察图像正确性。播放命令分别为

ffplay -f rawvideo -pixel_format nv12 -video_size 640x640 result.yuv

ffplay -f rawvideo -pixel_format nv12 -video_size 512x512 -framerate 25 resize_out.bin

2.2.9 yolov5_tracker_sample

yolov5_tracker_sample 相关编译,测试步骤,测试结果分析可参考文档 TacoAI 应用开发入门