✏️
BMNNSDK2开发手册
  • BM1684 BMNNSDK2 入门手册
  • 一、BMNNSDK2软件包
    • 1.1 BMNNSDK2 简介
    • 1.2 BMNNSDK2 文档
    • 1.3 基本概念介绍
    • 1.4 获取BMNNSDK2 SDK
    • 1.5 安装BMNNSDK2 SDK
      • 1.5.1 环境配置-Linux
      • 1.5.2 环境配置-Windows
      • 1.5.3 环境配置-SoC
    • 1.6 更新BMNNSDK
    • 1.7 参考样例简介
    • 1.8 BMNNSDK2更新记录
    • 1.9 BMNNSDK2已知问题
  • 二、快速入门
    • 2.1 跑通第一个例子:综述
    • 2.2 跑通第一个例子:模型迁移
    • 2.3 跑通第一个例子:算法迁移
  • 三、网络模型迁移
    • 3.1 模型迁移概述
    • 3.2 FP32 模型生成
      • 3.2.1 编译Caffe模型
      • 3.2.2 编译TensorFlow模型
      • 3.2.3 编译MXNet模型
      • 3.2.4 编译PyTorch模型
      • 3.2.5 编译 Darknet 模型
      • 3.2.6 编译ONNX模型
      • 3.2.7 编译Paddle模型
    • 3.3 INT8 模型生成
      • 3.3.1 准备lmdb数据集
      • 3.3.2 生成FP32 Umodel
      • 3.3.3 生成INT8 Umodel
      • 3.3.4 精度测试
      • 3.3.5 生成INT8 Bmodel
      • 3.3.6 auto_cali一键量化工具
    • 3.4 实例演示
      • 3.4.1 create_lmdb_demo
      • 3.4.2 classify_demo
      • 3.4.3 face_demo
  • 四、算法移植
    • 4.1 算法移植概述
    • 4.2 C/C++编程详解
    • 4.3 Python编程详解
    • 4.4 解码模块
    • 4.5 图形运算加速模块
    • 4.6 模型推理
    • 4.7 实例演示
  • 五、打包和发布
    • 5.1 概述
    • 5.2 PCIE加速卡模式
    • 5.3 SOC模式
  • 附录
由 GitBook 提供支持
在本页
  • 4.4.1 OpenCV解码
  • 4.4.2 FFmpeg解码
  1. 四、算法移植

4.4 解码模块

上一页4.3 Python编程详解下一页4.5 图形运算加速模块

最后更新于2年前

关于解码详细内容请参考。

关于ffmpeg解码python接口请参考。

本章主要介绍以下两点内容:

  • OpenCV解码

  • FFmpeg解码

4.4.1 OpenCV解码

OpenCV支持YUVI420/BGR格式输出,为了提高性能,示例中解码输出设置yuv格式数据。

简单示例如下:

  cv::VideoCapture cap;
 if (!cap.isOpened()) {
   cap.open(input_url);
  }
  cap.set(cv::CAP_PROP_OUTPUT_YUV, 1.0); //设置输出YUVI420格式数据,如选择BGR输出则注释掉此行代码
  cv::Mat *img = new cv::Mat;
  cap.read(*img);
  //do something
  ......
  //end
  delete img;

​ cap.set接口函数对输出格式设置, cap::read获取cv::Mat对象img,img数据接下来需要通过图像运算加速接口(bmcv模块)对数据进行推理前的预处理操作。

4.4.2 FFmpeg解码

  • C编程接口初始化配置:

// ffmpeg默认输出NV12压缩格式数据, 初始化解码器配置方法如下:
/*set compressed output*/
av_dict_set(&opts, "output_format", "101", 0);

if ((ret = avcodec_open2(*dec_ctx, dec, &opts)) < 0) {
   fprintf(stderr, "Failed to open %s codec\n",
               av_get_media_type_string(type));
   return ret;
}

请参考${BMNNSDK}/examples/SSD_objext/cpp_ffmpeg_bmcv_bmrt/main.cpp中相关内容。

  • Python编程接口

import sophon.sail as sail
decoder = sail.Decoder(filename)
img0 = decoder.read(handle)   #默认输出yuv i420格式
《多媒体用户开发手册》
《SAIL用户开发手册》