gen_image1_extern — Erzeugen eines Bildes aus einem Zeiger auf Pixel (mit Speicherverwaltung).
gen_image1_extern erzeugt ein Bild in der Größe
Width * Height.
Die Pixel in PixelPointer sind zeilensequentiell abgelegt.
Der Typ der übergebenen Pixel
(PixelPointer) 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_image1 nicht neu angelegt
und damit auch nicht kopiert.
Der Speicherplatz auf den PixelPointer 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 zum Parameter PixelPointer muss der Zeiger
auf die Prozedur abhängig von der benutzten Operatorsignatur
und der Programmierumgebung übergeben werden.
gen_image1_extern überprüft nicht, ob in PixelPointer genug
Speicher für ein Bild der Größe
Width * Height allokiert wurde.
Ebenso überprüft gen_image1_extern nicht, ob PixelPointer
einen gültigen Wert hat oder nicht.
Es muss also darauf geachtet werden, dass der Wert gültig ist, da es sonst
zum Programmabsturz kommen kann!
Image (output_object) image → object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)
Erzeugtes HALCON-Bild.
Type (input_control) string → (string)
Pixeltyp.
Defaultwert: 'byte'
Werteliste: 'byte', 'cyclic', 'direction', 'int1', 'int2', 'int4', 'real', 'uint2'
Width (input_control) extent.x → (integer)
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
Height (input_control) extent.y → (integer)
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
PixelPointer (input_control) pointer → (integer)
Zeiger auf den ersten Grauwert.
ClearProc (input_control) pointer → (integer)
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;
int r,c;
image = malloc(640*480);
for (r=0; r<480; r++)
for (c=0; c<640; c++)
image[r*640+c] = c % 255;
gen_image1_extern(new,"byte",640,480,(Hlong)image,(Hlong)free);
}
Sind die Parameterwerte korrekt, dann liefert gen_image1_extern
den Wert TRUE.
Andernfalls wird eine Fehlerbehandlung durchgeführt.
gen_image1,
gen_image_const,
get_image_pointer1,
gen_image3_extern
reduce_domain,
paint_gray,
paint_region,
set_grayval
Foundation