Schwerpunkte

HMI / GUI-Frameworks

OpenCV und Qt Quick - ein Einstieg

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


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.

Bild 1: Flussdiagramm des SceneGraph
© basysKom

Bild 1: Flussdiagramm des SceneGraph

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.

Seite 3 von 5

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

Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenVia Mail teilen

Das könnte Sie auch interessieren

KI-Prozessoren mit „Synapsen“ aus Nanodrähten
Zehn Prognosen zur wirtschaftlichen Entwicklung
»Viele Jobs werden vor künstlicher Intelligenz sicher sein«
Professionelle Displays, Kapazitätsausbau und Preisdruck
Kompaktere und günstigere Gassensoren
Augen und Intelligenz für Roboter

Verwandte Artikel

WEKA FACHMEDIEN GmbH