KlassenKlassenKlassenKlassen | | | | Operatoren

gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern (Operator)

Name

gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern — Erzeugen eines Bildes aus einem Zeiger auf Pixel (mit Speicherverwaltung).

Signatur

gen_image1_extern( : Image : Type, Width, Height, PixelPointer, ClearProc : )

Herror gen_image1_extern(Hobject* Image, const char* Type, const Hlong Width, const Hlong Height, const Hlong PixelPointer, const Hlong ClearProc)

Herror T_gen_image1_extern(Hobject* Image, const Htuple Type, const Htuple Width, const Htuple Height, const Htuple PixelPointer, const Htuple ClearProc)

Herror gen_image1_extern(Hobject* Image, const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PixelPointer, const HTuple& ClearProc)

HImage HImage::GenImage1Extern(const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PixelPointer, const HTuple& ClearProc)

void GenImage1Extern(HObject* Image, const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PixelPointer, const HTuple& ClearProc)

void HImage::GenImage1Extern(const HString& Type, Hlong Width, Hlong Height, void* PixelPointer, void* ClearProc)

void HImage::GenImage1Extern(const char* Type, Hlong Width, Hlong Height, void* PixelPointer, void* ClearProc)

void HOperatorSetX.GenImage1Extern(
[out] IHUntypedObjectX*Image, [in] VARIANT Type, [in] VARIANT Width, [in] VARIANT Height, [in] VARIANT PixelPointer, [in] VARIANT ClearProc)

void HImageX.GenImage1Extern(
[in] BSTR Type, [in] Hlong Width, [in] Hlong Height, [in] Hlong PixelPointer, [in] Hlong ClearProc)

static void HOperatorSet.GenImage1Extern(out HObject image, HTuple type, HTuple width, HTuple height, HTuple pixelPointer, HTuple clearProc)

void HImage.GenImage1Extern(string type, int width, int height, IntPtr pixelPointer, IntPtr clearProc)

Beschreibung

gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern erzeugt ein Bild in der Größe WidthWidthWidthWidthWidthwidth * HeightHeightHeightHeightHeightheight. Die Pixel in PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer sind zeilensequentiell abgelegt. Der Typ der übergebenen Pixel (PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer) muss mit TypeTypeTypeTypeTypetype übereinstimmen (siehe gen_image_constgen_image_constGenImageConstgen_image_constGenImageConstGenImageConst 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_image1gen_image1GenImage1gen_image1GenImage1GenImage1 nicht neu angelegt und damit auch nicht kopiert. Der Speicherplatz auf den PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer zeigt, muss also beim Löschen des Objektes ImageImageImageImageImageimage freigegeben werden. Dies geschieht durch die, vom Aufrufer zur Verfügung gestellte, Prozedur ClearProcClearProcClearProcClearProcClearProcclearProc. Diese Prozedur muss folgende Signatur haben

void ClearProc(void* ptr);

und wird beim Löschen von ImageImageImageImageImageimage 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 PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer muss der Zeiger auf die Prozedur abhängig von der benutzten Operatorsignatur und der Programmierumgebung übergeben werden.

Achtung

gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern überprüft nicht, ob in PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer genug Speicher für ein Bild der Größe WidthWidthWidthWidthWidthwidth * HeightHeightHeightHeightHeightheight allokiert wurde.

Parallelisierung

Parameter

ImageImageImageImageImageimage (output_object)  image objectHImageHImageHImageHImageXHobject * (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Erzeugtes HALCON-Bild.

TypeTypeTypeTypeTypetype (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Pixeltyp.

Defaultwert: 'byte' "byte" "byte" "byte" "byte" "byte"

Werteliste: 'byte'"byte""byte""byte""byte""byte", '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", 'real'"real""real""real""real""real", 'uint2'"uint2""uint2""uint2""uint2""uint2"

WidthWidthWidthWidthWidthwidth (input_control)  extent.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite des Bildes.

Defaultwert: 512

Wertevorschläge: 128, 256, 512, 1024

Typischer Wertebereich: 1 ≤ Width Width Width Width Width width ≤ 512 (lin)

Minimale Schrittweite: 1

Empfohlene Schrittweite: 10

Restriktion: Width >= 1

HeightHeightHeightHeightHeightheight (input_control)  extent.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe des Bildes.

Defaultwert: 512

Wertevorschläge: 128, 256, 512, 1024

Typischer Wertebereich: 1 ≤ Height Height Height Height Height height ≤ 512 (lin)

Minimale Schrittweite: 1

Empfohlene Schrittweite: 10

Restriktion: Height >= 1

PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer (input_control)  pointer HTupleHTupleHTupleVARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Zeiger auf den ersten Grauwert.

ClearProcClearProcClearProcClearProcClearProcclearProc (input_control)  pointer HTupleHTupleHTupleVARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Zeiger auf die Prozedur, die den Speicher des Bildes beim Löschen des Objektes wieder freigibt.

Defaultwert: 0

Beispiel (C)

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);
}

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.

Alternativen

gen_image1gen_image1GenImage1gen_image1GenImage1GenImage1, gen_image_constgen_image_constGenImageConstgen_image_constGenImageConstGenImageConst, get_image_pointer1get_image_pointer1GetImagePointer1get_image_pointer1GetImagePointer1GetImagePointer1, gen_image3_externgen_image3_externGenImage3Externgen_image3_externGenImage3ExternGenImage3Extern

Siehe auch

reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, paint_graypaint_grayPaintGraypaint_grayPaintGrayPaintGray, paint_regionpaint_regionPaintRegionpaint_regionPaintRegionPaintRegion, set_grayvalset_grayvalSetGrayvalset_grayvalSetGrayvalSetGrayval

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren