KlassenKlassenKlassenKlassen | | | | Operatoren

get_image_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1 (Operator)

Name

get_image_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1 — Zugriff auf den Zeiger eines Kanals.

Signatur

get_image_pointer1(Image : : : Pointer, Type, Width, Height)

Herror get_image_pointer1(const Hobject Image, Hlong* Pointer, char* Type, Hlong* Width, Hlong* Height)

Herror T_get_image_pointer1(const Hobject Image, Htuple* Pointer, Htuple* Type, Htuple* Width, Htuple* Height)

Herror get_image_pointer1(Hobject Image, Hlong* Pointer, char* Type, Hlong* Width, Hlong* Height)

Herror get_image_pointer1(Hobject Image, HTuple* Pointer, HTuple* Type, HTuple* Width, HTuple* Height)

Hlong HImage::GetImagePointer1(char* Type, Hlong* Width, Hlong* Height) const

HTuple HImageArray::GetImagePointer1(HTuple* Type, HTuple* Width, HTuple* Height) const

void GetImagePointer1(const HObject& Image, HTuple* Pointer, HTuple* Type, HTuple* Width, HTuple* Height)

HTuple HImage::GetImagePointer1(HTuple* Type, HTuple* Width, HTuple* Height) const

void* HImage::GetImagePointer1(HString* Type, Hlong* Width, Hlong* Height) const

void HOperatorSetX.GetImagePointer1(
[in] IHUntypedObjectX* Image, [out] VARIANT* Pointer, [out] VARIANT* Type, [out] VARIANT* Width, [out] VARIANT* Height)

VARIANT HImageX.GetImagePointer1(
[out] VARIANT* Type, [out] VARIANT* Width, [out] VARIANT* Height)

static void HOperatorSet.GetImagePointer1(HObject image, out HTuple pointer, out HTuple type, out HTuple width, out HTuple height)

HTuple HImage.GetImagePointer1(out HTuple type, out HTuple width, out HTuple height)

IntPtr HImage.GetImagePointer1(out string type, out int width, out int height)

Beschreibung

get_image_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1 liefert einen Pointer auf den ersten Kanal des Bildes ImageImageImageImageImageimage. Außerdem wird der Bildtyp (TypeTypeTypeTypeTypetype = '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.

Achtung

Der von get_image_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1 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_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain 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_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1 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_image1gen_image1GenImage1gen_image1GenImage1GenImage1. Bei mehrkanaligen Eingabebildern wird der Bildtyp und der Pointer des ersten Kanals zurückgegeben.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real / complex / vector_field)

Eingabebild.

PointerPointerPointerPointerPointerpointer (output_control)  pointer(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Zeiger auf die Bilddaten in der HALCON-Datenbank.

TypeTypeTypeTypeTypetype (output_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Typ des Bildes.

Werteliste: 'byte'"byte""byte""byte""byte""byte", 'complex'"complex""complex""complex""complex""complex", 'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic", 'direction'"direction""direction""direction""direction""direction", 'int1'"int1""int1""int1""int1""int1", 'int2'"int2""int2""int2""int2""int2", 'int4'"int4""int4""int4""int4""int4", 'int8'"int8""int8""int8""int8""int8", 'real'"real""real""real""real""real", 'uint2'"uint2""uint2""uint2""uint2""uint2", 'vector_field_absolute'"vector_field_absolute""vector_field_absolute""vector_field_absolute""vector_field_absolute""vector_field_absolute", 'vector_field_relative'"vector_field_relative""vector_field_relative""vector_field_relative""vector_field_relative""vector_field_relative"

WidthWidthWidthWidthWidthwidth (output_control)  extent.x(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite des Bildes.

HeightHeightHeightHeightHeightheight (output_control)  extent.y(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe des Bildes.

Beispiel (C)

Hobject  Image;
char     typ[128];
Hlong     width,height;
unsigned char *ptr;

read_image(&Image,"fabrik");
get_image_pointer1(Image,(Hlong*)&ptr,typ,&width,&height);

Ergebnis

get_image_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1 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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_imageread_imageReadImageread_imageReadImageReadImage

Alternativen

set_grayvalset_grayvalSetGrayvalset_grayvalSetGrayvalSetGrayval, get_grayvalget_grayvalGetGrayvalget_grayvalGetGrayvalGetGrayval, get_image_pointer3get_image_pointer3GetImagePointer3get_image_pointer3GetImagePointer3GetImagePointer3, get_image_sizeget_image_sizeGetImageSizeget_image_sizeGetImageSizeGetImageSize, get_image_typeget_image_typeGetImageTypeget_image_typeGetImageTypeGetImageType

Siehe auch

paint_regionpaint_regionPaintRegionpaint_regionPaintRegionPaintRegion, paint_graypaint_grayPaintGraypaint_grayPaintGrayPaintGray

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren