Seite 1 von 1

[gelöst] QGraphicsView/QGraphicsScene vs. QLabel

Verfasst: 8. September 2009 18:27
von gelignite
Hallo,

sowohl über QGraphicsView und QGraphicsScene als auch über ein QLabel lässt sich ja ein QPixmap auf den Bildschirm zaubern. Aber was geht schneller? Gibt es noch eine weitere Möglichkeit?

Hintergrund ist Folgendes:
Ein Bild, welches von einer Webcam kommt, wird durch verschiedene CV-Methoden verändert und ein Ergebnisbild soll auf dem Bildschirm visualisiert werden. Da die CV-Methoden bereits einiges an Rechenzeit in Anspruch nehmen, soll wenigstens die Anzeige so schnell wie möglich erfolgen. Was geht nun schneller?

Das:

Code: Alles auswählen

QLabel * label = new QLabel( parent );
label->setPixmap( pixmap );
Oder das:

Code: Alles auswählen

QGraphicsScene * scene = new QGraphicsScene( parent );
scene->addPixmap( pixmap );
QGraphicsView  * gview = new QGraphicsView( scene );
Allein vom augenscheinlichen Umfang her, würde ich ja zu ersterem tendieren, aber liege ich damit auch richtig?

Gruß,
gelignite

Verfasst: 9. September 2009 08:10
von Curtis Newton
Das schöne an Qt ist ja auch, dass die Sourcen vorliegen. Schau Dir doch mal void QGraphicsScene::addItem(QGraphicsItem *item) und void QLabel::setPixmap(const QPixmap &pixmap) an, dann siehst Du das recht schnell.

C.

Verfasst: 9. September 2009 11:32
von sven-kt
Und selbst wenn das erste schneller ist,
wenn du das bild 60 sekunden bearbeitest und dann mit methode 1 0,03 sekunden brauchst und mit methode 2 0,07 sekunden musst du es halt probieren.
mit der 2ten lässt sich nachträglich allerdings mehr anstellen als mit der 1ten.

Verfasst: 9. September 2009 20:23
von gelignite
Hallo,

in der Tat gibt das Betrachten des Quellcodes einen noch deutlichen Überblick, welches von beiden die wahrscheinlich schnellere Alternative ist. Danke für den Hinweis. :-)
sven-kt hat geschrieben:Und selbst wenn das erste schneller ist,
wenn du das bild 60 sekunden bearbeitest und dann mit methode 1 0,03 sekunden brauchst und mit methode 2 0,07 sekunden musst du es halt probieren.
mit der 2ten lässt sich nachträglich allerdings mehr anstellen als mit der 1ten.
Immerhin 0,04 Sekunden - um dein Beispiel einmal aufzunehmen - die sich einsparen ließen. Kleinvieh macht auch Mist. :wink:
Spaß bei Seite. Wenn sich bei einer so einfachen Entscheidungsmöglichkeit Rechenzeit einsparen lässt, dann ist das Rechenzeit, die man anderer Stelle sehr wahrscheinlich besser investieren kann, z. B. dem Einsatz eines zusätzlichen Filters für noch präzisere Ergebnisse.

Und wenn die Auswertung wirklich 60 Sekunden betrüge, müsste man sich wahrscheinlich eher Gedanken über eine andere Vorgehensweise machen. :wink: Ich möchte mir keine Überwachung einer Gefahrenzone (z. B. Schwenkbereich eines Baggers) vorstellen, bei dem der Schutzmechanismus 60 Sekunden braucht, bis er alarm schlägt. :shock:

Danke für die Antworten.

Gruß,
gelignite