使用多线程加速实时视频流处理的思路
时间:2023-08-18 11:59:56来源:哔哩哔哩


(资料图)

再初次接触机器视觉的小伙伴应该都会遇到这种情况,明明摄像头输出的画面是 30 fps 的,但对每一帧图像进行畸变矫正或者是一些图像处理后,视频帧数降低到了不到 10 fps!还伴随出现丢帧或者是播放缓慢,内存占用越来越多。

最近想到了一种利用线程池去并行处理视频流的方法,该方法在处理耗时高于视频帧产生间隔时,能有效提高最终视频输出的帧率。本文会用伪代码来描述整个方法的框架,不提供实际的代码。

基本思路就是将读取、计算和消费三部分分离到不同的线程中,读取视频流的图像为单独一条线程,图像处理的计算在线程池中进行,最后使用结果的部分也是单独一条线程。

下面开始介绍完整的流程细节,先定义一些基本的接口和类型:

首先就是读取图像线程的部分,该线程负责读取一帧视频图像,然后创建一个图像处理任务提交到线程池中,图像处理完成后,把结果塞到优先队列里。

消费结果的线程逻辑会稍微复杂一点,因为线程池中执行任务的顺序是不确定,我们需要用条件变量来控制输出顺序。

## 总结

整个框架的思路其实挺简单的,但实际实现的时候需要注意的细节会比较多,这里举例两个:

1. 多线程的安全问题,用 C/C++ 实现的时候,要尽可能避免图像数据的拷贝,又要保证线程池任务执行和最后读取结果的时候图像数据是有效的;

2. 最终使用结果图像的部分,由于是并行处理多帧图像,最终得到图像的频率是不稳定的,有可能一瞬间就读读到 N 幅图像,这时候就需要根据需求来修改代码了,例如我最终的图像是要实时显示出来,那就要加上合适的延迟再播放下一帧,不如画面就会出现卡顿一下下,然后瞬间播放好几帧的情况;

标签:

最新
  • 使用多线程加速实时视频流处理的思路

    再初次接触机器视觉的小伙伴应该都会遇到这种情况,明明摄像头输出的画

  • 利比亚首都的黎波里武装冲突已造成27人死亡106人受伤

    据利比亚媒体15日报道,利比亚医疗急救中心宣布,据初步统计,已有27人

  • 均瑶健康(605388):8月16日北向资金增持26.01万股

    8月16日北向资金增持26 01万股均瑶健康。近5个交易日中,获北向资金增

  • 卢卡斯影业将关闭新加坡业务

    亚洲新闻台(CNA)8月15日消息,卢卡斯影业的母公司迪士尼表示,由于经

  • 8月16日生意社醋酸基准价为3483.33元/吨

    8月16日,生意社醋酸基准价为3483 33元 吨,与本月初(3066 67元 吨)相

  • 宏观|深化库存周期认识的五个视角

    文|程强历史数据显示,股票和商品市场在主动补库期和被动去库期表现较

  • 孤注一掷叙事顺序 《孤注一掷》的缝合叙事与情感转喻 基本情况讲解

    1、孤注一掷叙事顺序2、《孤注一掷》的缝合叙事与情感转喻3、以上就是

  • 松岗“党员助企”直播带货活动第三期收官 助力本土潮玩原创IP火速出圈

    {margin:;font:Helvetica}深圳新闻网2023年8月15日讯(记者钟满香曾甜)“第

  • 上海地铁8号线全程线路图(上海地铁8号线路线图)

    我是小前,我来为大家解答以上问题。上海地铁8号线全程线路图,上海地

  • 俄为新型核潜艇装备“锆石”高超音速巡航导弹系统

    新华社北京8月14日电俄罗斯联合造船集团总裁阿列克谢·拉赫曼诺夫确认

  • 中国电信积分怎么换话费

    什么是中国电信积分?中国电信积分是中国电信推出的一种积分制度,用户

  • 社保基金持仓路径,大曝光

    另外,从持股占流通A股比例来看,圣晖集成、广和通、嵘泰股份、明月镜

  • 原油周报:美国通胀再次加速上升 国际油价持续振荡

    原油周报:美国通胀再次加速上升国际油价持续振荡

  • 梦幻西游群雄逐鹿天元决赛年内战队难挡锋芒,王者之师再添一冠

    梦幻西游群雄逐鹿天元决赛年内战队难挡锋芒,王者之师再添一冠,内战,大

  • 《宝岛一村》经典版15周年巡演登陆北京

    热腾腾的天津包子作为话剧《宝岛一村》的结尾“彩蛋”,给北京观众带来

  • 盐津铺子(002847):23Q2收入延续高增 盈利水平如期提升

    盐津铺子(002847):23Q2收入延续高增盈利水平如期提升

  • 旅游
    • 一片蜜瓜138元,拼多多同款不到4元/斤,百亿补贴太给力

    • 停贷意味着什么?房贷申请停贷一年有影响吗?-全球今热点

    • 怎么购买旅游意外险? 旅游意外险包括哪些范围?

    • 拼多多新人1元抢购怎么抢?1元购在哪找?-今日要闻