Mehrere Bilder zusammenfügen

In diesem Beispiel werden fünf Bilder mit Hilfe der Funktion F_VN_FuseImagesArray aneinandergehängt. Diese Funktionalität ist vor allem in Verbindung mit Zeilenkameras und der nahtlosen Aufnahme von kontinuierlichem Materialfluss hilfreich.

Erklärung

Die Funktion F_VN_FuseImagesArray nimmt ein Array von (maximal zehn) Bildern entgegen und fügt diese in einem neuen Bild aneinander. In dem folgenden Beispiel-Programm werden zunächst fünf unterschiedlich gefärbte Bilder mit einer Höhe von 10px erstellt. Die Anzahl kann durch die Variable nImages und die Höhe mit nHeight verändert werden. Achten Sie darauf, die Anzahl nur im Bereich 1-10 zu variieren.

Die Größe des Ergebnisbildes wird durch Angabe der Bildzeilen mit den Funktionsparametern nFirstLine und nNumLines festgelegt. Dadurch ist es möglich, das erste und letzte Bild „anzuschneiden“.

Falls nur zwei Bilder zusammengefügt werden sollen, kann ebenfalls die Funktion F_VN_FuseImages verwendet werden.

Programm

Folgende Variablen werden deklariert:

VAR
    hr                  :  HRESULT;
    aImages             :  ARRAY[0..9] OF ITcVnImage;
    ipImageFused        :  ITcVnImage;
    ipImageFusedDisp    :  ITcVnDisplayableImage;
    nImages             :  INT := 5;
    nHeight             :  UDINT := 10;
    aColor              :  ARRAY[0..9] OF TcVnVector4_LREAL := [[255,0,0], [200,50,0], [150,100,0], [100,150,0], [50,200,0], [0,250,0], [0,200,50], [0,150,100], [0,100,150], [0,50,200]];
    i                   :  INT;
VAR

hr

Statusvariable vom Typ HRESULT.

aImages

Array mit mehreren Bildern, die zusammengefügt werden sollen.

ipImageFused

Ergebnisbild, in dem mehrere Bilder aus aImages zusammengefügt werden.

ipImageFusedDisp

Anzeigbares Ergebnisbild.

nImages

Anzahl der Bilder, die zusammengefügt werden sollen.

aColor

Zehn verschiedene Farben, um die Bilder in aImages visuell auseinanderhalten zu können.

i

Hilfsvariable.

Im Programm werden zunächst die Bilder in dem Array aImages initialisiert und eingefärbt. Um die Bilder visuell auseinanderhalten zu können, werden zehn verschiedene Farben aus aColor verwendet.

FOR i := 0 TO nImages-1 DO
     hr := F_VN_CreateImageAndSetPixels(aImages[i], 100, nHeight, ETcVnElementType.TCVN_ET_USINT, 3, aColor[i], hr);
END_FOR

Daraufhin wird eine definierte Anzahl nImages an Bildern aus aImages in dem Bild ipImageFused vertikal zusammengefügt:

hr := F_VN_FuseImagesArray(aImages, nImages, ipImageFused, 0, nImages * nHeight, hr);

Schließlich wird das Bild angezeigt:

hr := F_VN_TransformIntoDisplayableImage(ipImageFused, ipImageFusedDisp, hr);

Ergebnis

nImages = 2:

Mehrere Bilder zusammenfügen 1:

nImages = 5:

Mehrere Bilder zusammenfügen 2:

nImages = 10:

Mehrere Bilder zusammenfügen 3:

Ähnliche Beispiele

Bildbereiche kopieren