ffmpeg对接darknet解码与检测方式优选

本文对比了三种ffmpeg对接darknet进行视频解码和物体检测的方法:1) bgr -> cv::mat -> detect,2) bgr -> 直接对接image_t,3) 不缩放直接对接image_t。尽管方法二和三避免了cv::mat转换,但额外的像素复制影响很小。方法二因在解码线程中缩小图片而不满足保存原图的需求。综合考虑,优化效果并不显著。
摘要由CSDN通过智能技术生成


方法一: 从ffmpeg 生成bgr => cv::mat => image_t , 调用detect

1, 解码线程, 解码rtsp协议 264格式流 生成 w = 1280 h = 720 yuv420p 
2, 通过 sws_scale函数将 yuv420p 缩小成 w = 1280 h = 720 AV_PIX_FMT_BGR24 格式
3, 通过opencv的IplImage 将数据传到物体检测线程
     IplImage* pImg = cvCreateImage(cvSize(avctx->width, avctx->height), 8, 3);
     memcpy(pImg->imageData, rgbBuf, rgbBufSize);
4, 检测线程通过调用detect函数进行检测.
    std::vector<bbox_t> detect(cv::Mat mat, float thresh = 0.2, bool use_mean = false)
   这个以mat为参数的detect 中有如下循环

                    for (int y = 0; y < h; ++y) {
                        for (int k = 0; k < c; ++k) {
                            for (int x = 0; x < w; ++x) {
                              im.data[k*w*h + y*w + x] = data[y*step + x*c + k] / 255.0f;
                            }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值