gen_image1_rect
— Erzeugen eines Bildes mit rechteckiger Domäne aus einem Zeiger auf Pixel
(mit Speicherverwaltung).
gen_image1_rect( : Image : PixelPointer, Width, Height, VerticalPitch, HorizontalBitPitch, BitsPerPixel, DoCopy, ClearProc : )
Der Operator gen_image1_rect
erzeugt ein Bild in der Größe
(VerticalPitch
/(HorizontalBitPitch
/8)) * Height
.
Die Pixel in PixelPointer
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.
VerticalPitch
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 VerticalPitch
/
(HorizontalBitPitch
/ 8), seine Höhe ist Height
.
Die Domäne des Ausgabebildes Image
ist ein Rechteck der Größe
Width
* Height
.
Der Parameter HorizontalBitPitch
ist der horizontale
Abstand (in Bits) benachbarter Pixel. BitsPerPixel
ist die
Anzahl der verwendeten Bits pro Pixel.
Ist DoCopy
auf 'true' gesetzt, werden die von
PixelPointer
referenzierten Bilddaten kopiert und Speicher
für das neue Bild wird von HALCON neu angelegt.
Andernfalls muss der Speicherbereich auf den
PixelPointer
zeigt wieder freigegeben werden.
Dies geschieht durch die vom Aufrufer zur Verfügung gestellte
Prozedur ClearProc
. Diese Prozedur muss folgende
Signatur haben
void ClearProc(void* ptr);
und wird beim Löschen von Image
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 PixelPointer
muss der Zeiger
auf die Prozedur abhängig von der benutzten Operatorsignatur
und der Programmierumgebung übergeben werden.
Ist DoCopy
gleich 'true' so ist ClearProc
irrelevant.
Der Operator gen_image1_rect
ist symmetrisch zu
get_image_pointer1_rect
.
gen_image1_rect
überprüft nicht, ob PixelPointer
einen
gültigen Wert hat oder nicht.
Es muss also darauf geachtet werden, dass der Wert gültig ist, da es sonst
zum Programmabsturz kommen kann!
Image
(output_object) image →
object (byte / uint2 / int4)
Erzeugtes HALCON-Bild.
PixelPointer
(input_control) pointer →
(integer)
Zeiger auf das erste Pixel.
Width
(input_control) extent.x →
(integer)
Breite des Bildes.
Defaultwert: 512
Wertevorschläge: 128, 256, 512, 1024
Typischer Wertebereich: 1
≤
Width
≤
512
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Restriktion: Width >= 1
Height
(input_control) extent.y →
(integer)
Höhe des Bildes.
Defaultwert: 512
Wertevorschläge: 128, 256, 512, 1024
Typischer Wertebereich: 1
≤
Height
≤
512
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Restriktion: Height >= 1
VerticalPitch
(input_control) integer →
(integer)
Abstand (in Bytes) zwischen Pixel m in Zeile n und Pixel m in Zeile n+1 des 'Eingabebildes'.
Restriktion: VerticalPitch >= Width * HorizontalBitPitch / 8
HorizontalBitPitch
(input_control) integer →
(integer)
Abstand benachbarter Pixel in Bits.
Defaultwert: 8
Werteliste: 8, 16, 32
BitsPerPixel
(input_control) integer →
(integer)
Anzahl verwendeter Bits pro Pixel.
Defaultwert: 8
Werteliste: 8, 9, 10, 11, 12, 13, 14, 15, 16, 32
Restriktion: BitsPerPixel <= HorizontalBitPitch
DoCopy
(input_control) string →
(string)
Bilddaten kopieren.
Defaultwert: 'false'
Wertevorschläge: 'true' , 'false'
ClearProc
(input_control) pointer →
(integer)
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_rect
den Wert 2 (H_MSG_TRUE).
Andernfalls wird eine Fehlerbehandlung durchgeführt.
gen_image1
,
gen_image1_extern
,
gen_image_const
Foundation