| Operatoren |
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.
Erzeugtes HALCON-Bild.
Zeiger auf das erste Pixel.
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
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
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'
Wertevorschläge: 'true', '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_rect den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
gen_image1, gen_image1_extern, gen_image_const
Foundation
| Operatoren |