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模块)对数据进行推理前的预处理操作。
// 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;
}
import sophon.sail as sail
decoder = sail.Decoder(filename)
img0 = decoder.read(handle) #默认输出yuv i420格式