当前位置:   article > 正文

Qt/C++音视频开发73-高效滤镜/文字水印/图形水印/图片水印/yolo运算后的结果显示到画面中_qt opengl水印

qt opengl水印

一、前言

视频监控系统发展到今天,越来越智能,比如这些年流行的人脸识别、物体识别、烟感识别等,都是需要拿到图片数据去做运算处理,然后将结果显示到视频画面中,或者还有要求将结果保存到视频录像文件中,以便打开回放查看。显示到画面中一般有两种方式,一种是通过滤镜的方式直接写入到图片视频数据中,一种是直接用opengl绘制,如果是滤镜方式,则占用比较大的CPU,如果分辨率大占用更多,毕竟需要将完整的一帧视频数据全部更新,应用新的文字水印和图形水印。如果是opengl绘制,则基本上是gpu在做处理,和cpu这边没啥关系,但是也有缺点,就是如果想直接将这些图形数据保存到视频文件中,则只能通过MP4中的额外数据存储才行。

保存到视频文件中一般也有两种方式,一种是源头就是加好滤镜后的视频帧,这种无需做处理直接写入到文件即可。一种是通过extdata方式写入水印信息,这样就要求定义一种格式规范,解析那边按照这个规范解析MP4码流数据的时候,取出来,然后再绘制。总之无论何种方式都各有优缺点,个人建议如果通道少,或者硬件性能强劲,直接用滤镜的方式更可靠通用,毕竟视频帧数据就已经是带了各种水印的,用任何播放器都可以正常播放查看。

一路通道滤镜很简单,没啥问题,当通道多了的时候,你会发现可能出现崩溃的情况,这个问题找了很久的原因,后面发现原来是用openglwidget绘制那边和这边解析的视频帧数据公用的指针,而这边发生了变化,绘制那边正好绘制到一半,冲突导致,于是需要搞个队列,慢慢的释放,比如缓存10帧滤镜帧,到了10帧后再释放第一帧&#x

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/981792
推荐阅读
相关标签
  

闽ICP备14008679号