我有 4 个相机对象。每个相机对象独立刷新帧。我想在我的视频墙类上可视化这些帧。基本上,我的拼接墙只是一个带有 draw Widget 方法的 gridlayout 子项。
每个相机对象都有 imageHolder 小部件。ImageHolder 小部件是 qOpenglWidget 的子部件
void OpenGLImageHolder::display(const QImage* img)
{
m_image = img;
this->update();
}
void OpenGLImageHolder::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.drawImage(this->rect(), *m_image);
}
每个 Image Holder 都有一个 QTimer,并且 QTimer::timeOut() 连接到 OpenGLImageHolder::display()。
不幸的是,通过这种设置,我只能同时可视化 3 个摄像头。如果我添加第四台摄像机,三个(或两个)之一会冻结。我知道调用了显示,因为当我调整大小小部件时,我得到了正确的图像更新。
制作视频墙的正确方法是什么?要不要自己做一个openglWidget,自己的窗口,然后直接在这个openglWidget上画图?我可以使用哪些工具来分析行为(似乎标准的 msvs 分析器还不够)。