首页| 论坛| 消息

标题:视频流界面停止刷新的问题
作者:hjh2008
日期:2022-05-31 17:41
内容:

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


#1 [liudianwu 05-31 19:33]
用句柄或者yuv自己绘制,而不是painter绘制image,你这个现象较冻结假死
#2 回 liudianwu 的帖子 [hjh2008 05-31 21:00]
liudianwu:用句柄或者yuv自己绘制,而不是painter绘制image,你这个现象较冻结假死 (2022-05-31 19:33) 
感谢!
1、是什么原因导致“冻结假死”呢?是调用update函数太频繁了吗?一个相机1秒大概30次,4个相机1秒大概120次。
2、我这是ubuntu系统下的。相机传过来的就是RGB的数据不是yuv的,而且除了图像我还要绘制对图像的检测结果,比如框出检测到的物体等。那要怎么用句柄或yuv来实现呢,有没有相关的资料,感谢!
#3 [veizi001 06-01 17:26]
起个定时器,按固定频率去刷新
#4 [snow_man_0 06-02 06:25]
QPainter用CPU绘制,可能4个图像计算负荷过大。QImage生成,用scanLine比setPixelColor效率高很多
#5 [lukai_q_t 06-02 08:44]
所有的QWidget等的刷新,都必须是主线程.
多线程刷新可能会导致楼主所说的问题。

回复 发表
主题 版块