Name
gen_image1_rectgen_image1_rectGenImage1Rectgen_image1_rectGenImage1RectGenImage1Rect — Erzeugen eines Bildes mit rechteckiger Domäne aus einem Zeiger auf Pixel
(mit Speicherverwaltung).
Herror gen_image1_rect(Hobject* Image, const Hlong PixelPointer, const Hlong Width, const Hlong Height, const Hlong VerticalPitch, const Hlong HorizontalBitPitch, const Hlong BitsPerPixel, const char* DoCopy, const Hlong ClearProc)
Herror T_gen_image1_rect(Hobject* Image, const Htuple PixelPointer, const Htuple Width, const Htuple Height, const Htuple VerticalPitch, const Htuple HorizontalBitPitch, const Htuple BitsPerPixel, const Htuple DoCopy, const Htuple ClearProc)
Herror gen_image1_rect(Hobject* Image, const HTuple& PixelPointer, const HTuple& Width, const HTuple& Height, const HTuple& VerticalPitch, const HTuple& HorizontalBitPitch, const HTuple& BitsPerPixel, const HTuple& DoCopy, const HTuple& ClearProc)
HImage HImage::GenImage1Rect(const HTuple& PixelPointer, const HTuple& Width, const HTuple& Height, const HTuple& VerticalPitch, const HTuple& HorizontalBitPitch, const HTuple& BitsPerPixel, const HTuple& DoCopy, const HTuple& ClearProc)
void GenImage1Rect(HObject* Image, const HTuple& PixelPointer, const HTuple& Width, const HTuple& Height, const HTuple& VerticalPitch, const HTuple& HorizontalBitPitch, const HTuple& BitsPerPixel, const HTuple& DoCopy, const HTuple& ClearProc)
void HImage::GenImage1Rect(void* PixelPointer, Hlong Width, Hlong Height, Hlong VerticalPitch, Hlong HorizontalBitPitch, Hlong BitsPerPixel, const HString& DoCopy, void* ClearProc)
void HImage::GenImage1Rect(void* PixelPointer, Hlong Width, Hlong Height, Hlong VerticalPitch, Hlong HorizontalBitPitch, Hlong BitsPerPixel, const char* DoCopy, void* ClearProc)
void HOperatorSetX.GenImage1Rect(
[out] IHUntypedObjectX** Image, [in] VARIANT PixelPointer, [in] VARIANT Width, [in] VARIANT Height, [in] VARIANT VerticalPitch, [in] VARIANT HorizontalBitPitch, [in] VARIANT BitsPerPixel, [in] VARIANT DoCopy, [in] VARIANT ClearProc)
void HImageX.GenImage1Rect(
[in] Hlong PixelPointer, [in] Hlong Width, [in] Hlong Height, [in] Hlong VerticalPitch, [in] Hlong HorizontalBitPitch, [in] Hlong BitsPerPixel, [in] BSTR DoCopy, [in] Hlong ClearProc)
static void HOperatorSet.GenImage1Rect(out HObject image, HTuple pixelPointer, HTuple width, HTuple height, HTuple verticalPitch, HTuple horizontalBitPitch, HTuple bitsPerPixel, HTuple doCopy, HTuple clearProc)
void HImage.GenImage1Rect(IntPtr pixelPointer, int width, int height, int verticalPitch, int horizontalBitPitch, int bitsPerPixel, string doCopy, IntPtr clearProc)
Der Operator gen_image1_rectgen_image1_rectGenImage1Rectgen_image1_rectGenImage1RectGenImage1Rect erzeugt ein Bild in der Größe
(VerticalPitchVerticalPitchVerticalPitchVerticalPitchVerticalPitchverticalPitch/(HorizontalBitPitchHorizontalBitPitchHorizontalBitPitchHorizontalBitPitchHorizontalBitPitchhorizontalBitPitch/8)) * HeightHeightHeightHeightHeightheight.
Die Pixel in PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer werden zeilensequentiell abgelegt.
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.
VerticalPitchVerticalPitchVerticalPitchVerticalPitchVerticalPitchverticalPitch entspricht dem Abstand (in Bytes) des m-ten
Bildpunktes in Zeile n und des m-ten Bildpunktes in Zeile n+1
innerhalb des Speichers und ist für alle Zeilen des 'Eingabebildes'
identisch. Die Breite des Ausgabebildes ist VerticalPitchVerticalPitchVerticalPitchVerticalPitchVerticalPitchverticalPitch /
(HorizontalBitPitchHorizontalBitPitchHorizontalBitPitchHorizontalBitPitchHorizontalBitPitchhorizontalBitPitch / 8), seine Höhe ist HeightHeightHeightHeightHeightheight.
Die Domäne des Ausgabebildes ImageImageImageImageImageimage ist ein Rechteck der Größe
WidthWidthWidthWidthWidthwidth * HeightHeightHeightHeightHeightheight.
Der Parameter HorizontalBitPitchHorizontalBitPitchHorizontalBitPitchHorizontalBitPitchHorizontalBitPitchhorizontalBitPitch ist der horizontale
Abstand (in Bits) benachbarter Pixel. BitsPerPixelBitsPerPixelBitsPerPixelBitsPerPixelBitsPerPixelbitsPerPixel ist die
Anzahl der verwendeten Bits pro Pixel.
Ist DoCopyDoCopyDoCopyDoCopyDoCopydoCopy auf 'true' gesetzt, werden die von
PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer referenzierten Bilddaten kopiert und Speicher
für das neue Bild wird von HALCON neu angelegt.
Andernfalls muss der Speicherbereich auf den
PixelPointerPixelPointerPixelPointerPixelPointerPixelPointerpixelPointer zeigt wieder 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.
Ist DoCopyDoCopyDoCopyDoCopyDoCopydoCopy gleich 'true' so ist ClearProcClearProcClearProcClearProcClearProcclearProc irrelevant.
Der Operator gen_image1_rectgen_image1_rectGenImage1Rectgen_image1_rectGenImage1RectGenImage1Rect ist symmetrisch zu
get_image_pointer1_rectget_image_pointer1_rectGetImagePointer1Rectget_image_pointer1_rectGetImagePointer1RectGetImagePointer1Rect.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Zeiger auf das erste Pixel.
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
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
Abstand (in Bytes) zwischen Pixel m in Zeile n
und Pixel m in Zeile n+1 des 'Eingabebildes'.
Restriktion: VerticalPitch >= Width * HorizontalBitPitch / 8
Abstand benachbarter Pixel in Bits.
Defaultwert: 8
Werteliste: 8, 16, 32
Anzahl verwendeter Bits pro Pixel.
Defaultwert: 8
Werteliste: 8, 9, 10, 11, 12, 13, 14, 15, 16, 32
Restriktion: BitsPerPixel <= HorizontalBitPitch
Bilddaten kopieren.
Defaultwert:
'false'
"false"
"false"
"false"
"false"
"false"
Wertevorschläge: 'true'"true""true""true""true""true", 'false'"false""false""false""false""false"
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_rect(new,(Hlong)image,400,480,640,8,8,'false',(long)free);
}
Sind die Parameterwerte korrekt, dann liefert gen_image1_rectgen_image1_rectGenImage1Rectgen_image1_rectGenImage1RectGenImage1Rect
den Wert 2 (H_MSG_TRUE).
Andernfalls wird eine Fehlerbehandlung durchgeführt.
get_image_pointer1_rectget_image_pointer1_rectGetImagePointer1Rectget_image_pointer1_rectGetImagePointer1RectGetImagePointer1Rect
gen_image1gen_image1GenImage1gen_image1GenImage1GenImage1,
gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern,
gen_image_constgen_image_constGenImageConstgen_image_constGenImageConstGenImageConst
get_image_pointer1_rectget_image_pointer1_rectGetImagePointer1Rectget_image_pointer1_rectGetImagePointer1RectGetImagePointer1Rect
Foundation