0

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);
}

各画像ホルダーには QTimer があり、QTimer::timeOut() は OpenGLImageHolder::display() に接続されています。

残念ながら、このセットアップでは、同時に 3 台のカメラしか表示できません。4 台目のカメラを追加すると、3 つのうちの 1 つ (または 2 つ) がフリーズします。resizeWidget を実行すると正しい Image が更新されるため、display が呼び出されたことがわかります。

videoWallの正しい作り方は?独自のウィンドウを持つ 1 つの openglWidget を作成し、この openglWidget に直接画像を描画しますか? 動作をプロファイリングするためにどのツールを使用できますか (標準の msvs プロファイラーでは不十分なようです)。

4

1 に答える 1