HMI / GUI-Frameworks

OpenCV und Qt Quick - ein Einstieg

21. Januar 2019, 13:31 Uhr | Berthold Krevert und Torsten Rahn, Software-Entwickler bei basysKom
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Einführung in Qt Quick und QML

Nun geht es an die Integration in das Qt-Quick-Framework. Dazu verschaffen wir uns mit Listing 2 einen kurzen Überblick über die Grundlagen der QML-Programmierung.

Listing 2

Rectangle {
    id: root
    width: 300
    height: 350
    color: "blue"
    Rectangle {
        id: firstInnerRectangle
        anchors.left: parent.left
        anchors.top: parent.top
        width: parent.width / 2
        height: parent.height / 2
        color: "green"
        opacity: 0.9
    }
    Rectangle {
        id: secondInnerRectangle
        anchors.right: parent.right
        anchors.bottom: parent.bottom
        width: parent.width / 2
        height: parent.height / 2
        color: "yellow"
    }
}

 

Das Beispiel erstellt drei Rechtecke: ein blaues Rechteck sowie ein grünes und ein gelbes, die sich innerhalb des blauen Rechtecks befinden. Die Syntax ist an JSON angelegt. Beim Setzen der Eigenschaften (Properties) für die Rechtecke - etwa Breite, Höhe, Farbe und Opazität - kann der Entwickler konkrete Werte angeben, sich allerdings auch auf andere Rechtecke beziehen. Die inneren Rechtecke sind hier halb so groß wie das äußere. Ändert sich die Größe des äußeren Rechtecks (des Parents), werden auch die Werte der inneren Rechtecke aktualisiert. QML-Entwickler sprechen von Property-Bindings. Die verwendeten Anchors helfen, Qt-Quick-Elemente an den Rändern anderer Elemente zu layouten.

Beim Rendern der Szene passiert nun folgendes: zunächst wird die QML-Hierarchie von der Qt-Quick-Logik in eine zweite Hierarchie überführt, den sogenannten SceneGraph.

passend zum Thema

Bild 1: Flussdiagramm des SceneGraph
Bild 1: Flussdiagramm des SceneGraph
© basysKom

Dieser wird vom Renderer auf die Anforderungen moderner Grafikhardware hin optimiert und kann in OpenGL-Kommandos (oder Kommandos anderer Grafik-APIs) ausgerollt werden (Bild 1). Die Transform-Nodes im SceneGraph codieren affine Transformationen in einer 4x4-Matrix. Die Geometry-Nodes verwalten die Geometrie-Buffer, die später beispielsweise als verkettete Dreiecke (Triangle-Strips), Linienzüge oder Punktwolken gezeichnet werden. Außerdem definieren sie ein Material, das angibt, wie die Geometrien schattiert werden sollen.


  1. OpenCV und Qt Quick - ein Einstieg
  2. Austausch zwischen den internen Bildformaten
  3. Einführung in Qt Quick und QML
  4. OpenCV unter Qt Quick
  5. Experimentieren mit LiveCV

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Componeers GmbH

Weitere Artikel zu Displays / HMI-Systeme / Panel-PCs

Weitere Artikel zu Künstliche Intelligenz (KI)