| Operatoren |
gen_image3_extern — Erzeugen eines dreikanaligen Bildes aus drei Zeigern auf Pixel (mit Speicherverwaltung).
gen_image3_extern( : Image : Type, Width, Height, PointerRed, PointerGreen, PointerBlue, ClearProc : )
gen_image3_extern erzeugt ein Dreikanalbild in der Größe Width * Height. Die Pixel in PointerRed, PointerGreen und PointerBlue sind zeilensequentiell abgelegt. Der Typ der übergebenen Pixel muss mit Type übereinstimmen (siehe gen_image_const für eine detailliertere Beschreibung der Pixeltypen). Wie ein Zeigerwert übergeben wird hängt von der benutzten Operatorsignatur und der Programmierumgebung ab. Es ist sicherzustellen, dass die tatsächliche Speicheradresse unter der die Bilddaten gespeichert sind übergeben wird und nicht die Adresse der Zeigervariablen. Es ist darauf zu achten, dass 64-Bit-Zeiger auf 64-Bit-Architekturen nicht beschnitten werden.
Der Speicher für das neue Bild wird von HALCON im Gegensatz zu gen_image3 nicht neu angelegt und damit auch nicht kopiert. Der Speicherplatz auf den (PointerRed, PointerGreen, PointerBlue) zeigt, muss also beim Löschen des Objektes Image freigegeben werden. Dies geschieht durch die, vom Aufrufer zur Verfügung gestellte, Prozedur ClearProc. Diese Prozedur muss folgende Signatur haben
void ClearProc(void* ptr);
und wird beim Löschen von Image mit der __cdecl Aufrufkonvention aufgerufen. Falls der Speicher nicht freigegeben werden soll (im Fall von Framegrabbern oder statischem Speicher), kann eine Prozedur "ohne Rumpf" oder der NULL-Pointer übergeben werden. Analog zu den Parametern PointerRed, PointerGreen und PointerBlue muss der Zeiger auf die Prozedur abhängig von der benutzten Operatorsignatur und der Programmierumgebung übergeben werden.
gen_image3_extern überprüft nicht, ob in PointerRed, PointerGreen und PointerBlue genug Speicher für ein Bild der Größe Width * Height allokiert wurde.
Erzeugtes HALCON-Bild.
Pixeltyp.
Defaultwert: 'byte'
Werteliste: 'byte', 'cyclic', 'direction', 'int1', 'int2', 'int4', 'real', 'uint2'
Breite des Bildes.
Defaultwert: 512
Wertevorschläge: 128, 256, 512, 1024
Typischer Wertebereich: 1 ≤ Width ≤ 512 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Restriktion: Width >= 1
Höhe des Bildes.
Defaultwert: 512
Wertevorschläge: 128, 256, 512, 1024
Typischer Wertebereich: 1 ≤ Height ≤ 512 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Restriktion: Height >= 1
Zeiger auf den ersten Grauwert des ersten Kanals.
Zeiger auf den ersten Grauwert des zweiten Kanals.
Zeiger auf den ersten Grauwert des dritten Kanals.
Zeiger auf die Prozedur, die den Speicher des Bildes beim Löschen des Objektes wieder freigibt.
Defaultwert: 0
void NewImage(Hobject *new)
{
unsigned char *image_red;
unsigned char *image_green;
unsigned char *image_blue;
int r,c;
image_red = malloc(640*480);
image_green = malloc(640*480);
image_blue = malloc(640*480);
for (r=0; r<480; r++)
for (c=0; c<640; c++)
{
image_red[r*640+c] = c % 255;
image_green[r*640+c] = (c+64) % 255;
image_blue[r*640+c] = (c+128) % 255;
}
gen_image3_extern(new,"byte",640,480,(Hlong)image_red,\
(Hlong)image_green,(Hlong)image_blue,(Hlong)free);
}
Sind die Parameterwerte korrekt, dann liefert gen_image3_extern den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
gen_image3, gen_image_const, get_image_pointer3, gen_image1_extern
reduce_domain, paint_gray, paint_region, set_grayval
Foundation
| Operatoren |