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:
nImages = 5:
nImages = 10: