• 1113阅读
  • 5回复

[提问]视频流界面停止刷新的问题 [复制链接]

上一主题 下一主题
离线hjh2008
 

只看楼主 倒序阅读 楼主  发表于: 2022-05-31
        我们用Qt开发了一款类似视频监控的软件,不过我们接的不是监控摄像头,而是工业摄像头,走的是千兆网接口,每个摄像头传输的视频流最大帧率是30帧。我们用子线程来接收摄像头的数据,每接收完一帧数据后,用信号-槽的方式通知GUI主线程调用Widget的update函数绘制帧图像
        目前遇到的这样的问题
        当只接1个摄像头的时候,软件能长时间正常显示摄像头的视频流图像;但当我们同时接4个摄像头时,正常显示几分钟后,四个摄像头的画面就不刷新了,此时如果我们对软件窗口进行最小化后再最大化操作(人为强制刷新)后4个摄像头又可以正常刷新了。
        请问这是什么问题?要怎么解决? 感谢!
离线liudianwu

只看该作者 1楼 发表于: 2022-05-31
用句柄或者yuv自己绘制,而不是painter绘制image,你这个现象较冻结假死
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线hjh2008

只看该作者 2楼 发表于: 2022-05-31
回 liudianwu 的帖子
liudianwu:用句柄或者yuv自己绘制,而不是painter绘制image,你这个现象较冻结假死 (2022-05-31 19:33) 

感谢!
1、是什么原因导致“冻结假死”呢?是调用update函数太频繁了吗?一个相机1秒大概30次,4个相机1秒大概120次。
2、我这是ubuntu系统下的。相机传过来的就是RGB的数据不是yuv的,而且除了图像我还要绘制对图像的检测结果,比如框出检测到的物体等。那要怎么用句柄或yuv来实现呢,有没有相关的资料,感谢!
离线veizi001

只看该作者 3楼 发表于: 2022-06-01
起个定时器,按固定频率去刷新
在线snow_man_0

只看该作者 4楼 发表于: 2022-06-02
QPainter用CPU绘制,可能4个图像计算负荷过大。QImage生成,用scanLine比setPixelColor效率高很多
离线lukai_q_t

只看该作者 5楼 发表于: 2022-06-02
所有的QWidget等的刷新,都必须是主线程.
多线程刷新可能会导致楼主所说的问题。

快速回复
限100 字节
 
上一个 下一个