📊
BMNNSDK2_1684_2.0.1
  • ​BM1684 BMNNSDK2 用户手册
  • 概述
    • 开发阶段
    • SoC和PCIE模式
  • BMNNSDK2
    • 简介
  • On Linux
  • On Windows10
  • 网络模型编译
    • 概述
  • FP32 Bmodel转化
  • INT8 Bmodel转化
  • INT8 Umodel转换INT8 Bmodel
  • 演示DEMO
  • 算法移植
    • 算法移植概述
  • 算法C编程详解
  • Python编程详解
  • 解码模块
  • 图形运算加速模块
  • 模型推理
  • 实例演示
Powered by GitBook
On this page
  • 1. Opencv解码
  • 2. ffmpeg解码

Was this helpful?

解码模块

PreviousPython编程详解Next图形运算加速模块

Last updated 5 years ago

Was this helpful?

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

关于ffmpeg解码python接口请参考

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

  • opencv解码

  • ffmpeg解码

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模块)对数据进行推理前的预处理操作。

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;
}

ffmpeg解码代码请参考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格式
Multimedia_Guide.pdf
Sophon_Inference_zh.pdf