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.
Ebens ü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 2 (H_MSG_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