get_image_pointer1
— Zugriff auf den Zeiger eines Kanals.
get_image_pointer1
liefert einen Pointer auf den ersten
Kanal des Bildes Image
. Außerdem wird der Bildtyp
(Type
= 'byte', 'int2', 'uint2' etc.) und die Bildgröße
(Breite und Höhe) ausgegeben. In der Folge ist dann über den Zeiger
ein direkter Zugriff auf die Bilddaten in der HALCON-Datenbank von
der Programmiersprache aus möglich, in der HALCON verwendet wird.
Ein Bild wird in HALCON zeilenweise linearisiert abgespeichert.
Die Bildtypen 'complex' und 'vector_field' bilden Sonderfälle. Bilder vom
Typ 'complex' sind interleaved, d.h., die Real- und Imaginärteile werden
abwechselnd abgespeichert. Bilder vom Typ 'vector_field' bestehen dagegen
aus zwei Matrizen, eine für die Zeilen und eine für die Spalten, die
nacheinander in der HALCON-Datenbank liegen.
Der von get_image_pointer1
zurückgegebene Zeiger darf nur so
lange verwendet werden, solange das Bildobjekt existiert. Das ist
der Fall, solange die zugehörige Variable in der Programmiersprache,
in der HALCON verwendet wird, gültig ist. Wird dies nicht
berücksichtigt, kann es zu unerwartetem Verhalten und zu
Programmabstürzen kommen.
Werden über den Zeiger Daten in ein existierendes Bild geschrieben,
so werden alle Bildobjekte modifiziert, die das Bild referenzieren.
Wenn z.B. mit reduce_domain
der Definitionsbereich eines
Bildes eingeschränkt wird, so benutzen das originale Bildobjekt mit
dem vollen Definitionsbereich und das Bildobjekt mit dem
eingeschränkten Definitionsbereich dieselbe Bildmatrix (d.h.
get_image_pointer1
liefert für die beiden Bilder denselben
Zeiger zurück). Falls also eines der beiden Bilder in diesem
Beispiel überschrieben wird, werden beide Bildobjekte modifiziert.
Falls der Zeiger in der Programmiersprache, in der HALCON verwendet
wird, dazu benutzt wird, Bilddaten zu schreiben, sollten daher die
Bilddaten in ein Bildobjekt geschrieben werden, das neu erzeugt
worden ist, z.B. mit gen_image1
.
Bei mehrkanaligen Eingabebildern wird der Bildtyp und der Pointer des ersten
Kanals zurückgegeben.
Image
(input_object) singlechannelimage(-array) →
object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real / complex / vector_field)
Eingabebild.
Pointer
(output_control) pointer(-array) →
(integer)
Zeiger auf die Bilddaten in der HALCON-Datenbank.
Type
(output_control) string(-array) →
(string)
Typ des Bildes.
Werteliste: 'byte' , 'complex' , 'cyclic' , 'direction' , 'int1' , 'int2' , 'int4' , 'int8' , 'real' , 'uint2' , 'vector_field_absolute' , 'vector_field_relative'
Width
(output_control) extent.x(-array) →
(integer)
Breite des Bildes.
Height
(output_control) extent.y(-array) →
(integer)
Höhe des Bildes.
Hobject Image; char typ[128]; Hlong width,height; unsigned char *ptr; read_image(&Image,"fabrik"); get_image_pointer1(Image,(Hlong*)&ptr,typ,&width,&height);
get_image_pointer1
liefert den Wert 2 (H_MSG_TRUE), falls genau ein
Bild übergeben wurde.
Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt
sich mittels set_system('no_object_result',<Result>)
festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
set_grayval
,
get_grayval
,
get_image_pointer3
,
get_image_size
,
get_image_type
Foundation