gen_image3gen_image3GenImage3GenImage3gen_image3 (Operator)
Name
gen_image3gen_image3GenImage3GenImage3gen_image3 — Erzeugen eines Bildes aus drei Zeigern auf die Pixel (rot/grün/blau).
Signatur
Herror gen_image3(Hobject* ImageRGB, const char* Type, const Hlong Width, const Hlong Height, const Hlong PixelPointerRed, const Hlong PixelPointerGreen, const Hlong PixelPointerBlue)
Herror T_gen_image3(Hobject* ImageRGB, const Htuple Type, const Htuple Width, const Htuple Height, const Htuple PixelPointerRed, const Htuple PixelPointerGreen, const Htuple PixelPointerBlue)
void GenImage3(HObject* ImageRGB, const HTuple& Type, const HTuple& Width, const HTuple& Height, const HTuple& PixelPointerRed, const HTuple& PixelPointerGreen, const HTuple& PixelPointerBlue)
void HImage::GenImage3(const HString& Type, Hlong Width, Hlong Height, void* PixelPointerRed, void* PixelPointerGreen, void* PixelPointerBlue)
void HImage::GenImage3(const char* Type, Hlong Width, Hlong Height, void* PixelPointerRed, void* PixelPointerGreen, void* PixelPointerBlue)
void HImage::GenImage3(const wchar_t* Type, Hlong Width, Hlong Height, void* PixelPointerRed, void* PixelPointerGreen, void* PixelPointerBlue)
(Nur Windows)
static void HOperatorSet.GenImage3(out HObject imageRGB, HTuple type, HTuple width, HTuple height, HTuple pixelPointerRed, HTuple pixelPointerGreen, HTuple pixelPointerBlue)
void HImage.GenImage3(string type, int width, int height, IntPtr pixelPointerRed, IntPtr pixelPointerGreen, IntPtr pixelPointerBlue)
Beschreibung
gen_image3gen_image3GenImage3GenImage3GenImage3gen_image3 erzeugt ein dreikanaliges Bild in der Größe
WidthWidthWidthWidthwidthwidth * HeightHeightHeightHeightheightheight.
Die Pixel in PixelPointerRedPixelPointerRedPixelPointerRedPixelPointerRedpixelPointerRedpixel_pointer_red, PixelPointerGreenPixelPointerGreenPixelPointerGreenPixelPointerGreenpixelPointerGreenpixel_pointer_green und
PixelPointerBluePixelPointerBluePixelPointerBluePixelPointerBluepixelPointerBluepixel_pointer_blue sind zeilensequentiell abgelegt.
Der Typ der übergebenen Pixel
(PixelPointerRedPixelPointerRedPixelPointerRedPixelPointerRedpixelPointerRedpixel_pointer_red etc.) muss mit TypeTypeTypeTypetypetype übereinstimmen
(siehe gen_image_constgen_image_constGenImageConstGenImageConstGenImageConstgen_image_const für eine detailliertere Beschreibung
der Pixeltypen).
Der Speicher für das neue Bild wird von HALCON neu angelegt.
Er kann also nach dem Aufruf freigegeben werden.
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.
Achtung
gen_image3_externgen_image3_externGenImage3ExternGenImage3ExternGenImage3Externgen_image3_extern überprüft nicht, ob die Pixel in
PixelPointerRedPixelPointerRedPixelPointerRedPixelPointerRedpixelPointerRedpixel_pointer_red, PixelPointerGreenPixelPointerGreenPixelPointerGreenPixelPointerGreenpixelPointerGreenpixel_pointer_green und
PixelPointerBluePixelPointerBluePixelPointerBluePixelPointerBluepixelPointerBluepixel_pointer_blue einen gültigen Wert haben oder nicht.
Es muss also darauf geachtet werden, dass diese Werte gültig sind, da es
sonst zum Programmabsturz kommen kann!
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
ImageRGBImageRGBImageRGBImageRGBimageRGBimage_rgb (output_object) image → objectHImageHObjectHImageHobject * (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)
Erzeugtes Bild mit neuer Bildmatrix.
TypeTypeTypeTypetypetype (input_control) string → HTuplestrHTupleHtuple (string) (string) (HString) (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 → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Breite des Bildes.
Defaultwert: 512
Wertevorschläge: 128, 256, 512, 1024
Typischer Wertebereich: 1
≤
Width
Width
Width
Width
width
width
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
HeightHeightHeightHeightheightheight (input_control) extent.y → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Höhe des Bildes.
Defaultwert: 512
Wertevorschläge: 128, 256, 512, 1024
Typischer Wertebereich: 1
≤
Height
Height
Height
Height
height
height
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
PixelPointerRedPixelPointerRedPixelPointerRedPixelPointerRedpixelPointerRedpixel_pointer_red (input_control) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Zeiger auf den ersten Rot-Wert (Kanal 1).
PixelPointerGreenPixelPointerGreenPixelPointerGreenPixelPointerGreenpixelPointerGreenpixel_pointer_green (input_control) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Zeiger auf den ersten Grün-Wert (Kanal 2).
PixelPointerBluePixelPointerBluePixelPointerBluePixelPointerBluepixelPointerBluepixel_pointer_blue (input_control) pointer → HTupleintHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)
Zeiger auf den ersten Blau-Wert (Kanal 3).
Beispiel (C)
void NewRGBImage(Hobject *new)
{
unsigned char red[768*525];
unsigned char green[768*525];
unsigned char blue[768*525];
int r,c;
for (r=0; r<525; r++)
for (c=0; c<768; c++)
{
red[r*768+c] = c % 255;
green[r*768+c] = (767 - c) % 255;
blue[r*768+c] = r % 255;
}
gen_image3(new,"byte",768,525,(Hlong)red,(long)green,(long)blue);
}
main()
{
Hobject rgb;
open_window(0,0,768,525,0,"","",&WindowHandle);
NewRGBImage(&rgb);
disp_color(rgb,WindowHandle);
}
Ergebnis
Sind die Parameterwerte korrekt, dann liefert gen_image3gen_image3GenImage3GenImage3GenImage3gen_image3
den Wert 2 (H_MSG_TRUE).
Andernfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
gen_image_constgen_image_constGenImageConstGenImageConstGenImageConstgen_image_const,
get_image_pointer1get_image_pointer1GetImagePointer1GetImagePointer1GetImagePointer1get_image_pointer1
Nachfolger
disp_colordisp_colorDispColorDispColorDispColordisp_color
Alternativen
gen_image1gen_image1GenImage1GenImage1GenImage1gen_image1,
compose3compose3Compose3Compose3Compose3compose3,
gen_image_constgen_image_constGenImageConstGenImageConstGenImageConstgen_image_const
Siehe auch
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain,
paint_graypaint_grayPaintGrayPaintGrayPaintGraypaint_gray,
paint_regionpaint_regionPaintRegionPaintRegionPaintRegionpaint_region,
set_grayvalset_grayvalSetGrayvalSetGrayvalSetGrayvalset_grayval,
get_image_pointer1get_image_pointer1GetImagePointer1GetImagePointer1GetImagePointer1get_image_pointer1,
decompose3decompose3Decompose3Decompose3Decompose3decompose3
Modul
Foundation