Aktivieren Sie JavaScript, um die Website anzuzeigen.

IDS Software Suite 4.95.1

Windows_Logo
Linux_Logo

USB 2.0

USB 3.x

GigE

USB 2.0

USB 3.x

GigE

Syntax

INT is_AOI (HIDS hCam, UINT nCommand, void* pParam, UINT nSizeOfParam)

Beschreibung

Mit is_AOI() kann die Größe und Position eines Bildausschnitts (area of interest - AOI) gesetzt werden. Die AOI ist immer bezogen auf den Sensor. Mögliche AOI sind:

•Image AOI – Darstellung eines Teilbildes

•Auto Brightness AOI – Referenz-Bildausschnitt für die automatische Helligkeitssteuerung

•Auto Whitebalance AOI – Referenz-Bildausschnitt für den automatischen Weißabgleich

Bei Image AOIs gelten sensorabhängige Einschränkungen für die Schrittweiten von Position und Größe. Die Werte für Position und Größe der AOI müssen ganzzahlige Vielfache der erlaubten Schrittweiten sein. Genauere Informationen zum AOI-Raster einzelner Kameramodelle finden Sie im zugehörigen Kapitel des Abschnitts Kamera- und Sensordaten.

hint_info

Diese Funktion wird von folgenden Kameramodellen nicht unterstützt:

•UI-1007XS

Über den Übergabeparameter nCommand wird dabei der Funktionsmodus gewählt. Der Übergabeparameter pParam ist abhängig vom Funktionsmodus unterschiedlich belegt; bei Funktionen zum Setzen oder Rücklesen eines Wertes enthält pParam einen Zeiger auf eine Variable vom Typ UINT. Die Größe des Speicherbereichs, auf den pParam verweist, wird im Übergabeparameter nSizeOfParam angegeben.

AOI für die automatische Bildregelung

Die AOI für die automatische Helligkeitsregelung (AES/AGC) und den automatischen Weißabgleich (AWB) ist standardmäßig so groß wie die aktuelle Bildgröße (d. h. die Image AOI).

Nach Änderungen der Bildgeometrie (durch Neusetzen einer Image AOI, Binning oder Subsampling) werden die AOI für die automatische Bildregelung immer auf den Wert der eingestellten Image AOI zurückgesetzt. Das bedeutet, dass die Auto Brightness/Auto White Balance AOI eventuell neu gesetzt werden müssen.

Schnelles Verschieben von AOIs

Über das Kommando IS_AOI_IMAGE_SET_POS_FAST kann die Position von Bildausschnitten sehr schnell verändert werden. Der Zeitbedarf für die Ausführung dieses Kommandos liegt im Bereich weniger Millisekunden. Bei der Verwendung dieses Kommandos sind folgende Besonderheiten zu beachten:

•Das Kommando wird nicht von allen Kameramodellen unterstützt. Über das Kommando IS_AOI_IMAGE_GET_POS_FAST_SUPPORTED kann abgefragt werden, ob ein Sensor das schnelle Verschieben unterstützt.

•Die Hotpixelkorrektur muss abgeschaltet werden (siehe is_HotPixel()).

•Der Bildeinzug wird beim schnellen Verschieben der AOI nicht angehalten. Dadurch können nach dem Aufruf des Kommandos noch weitere Bilder mit der alten AOI-Position übertragen werden, wenn diese sich noch im Treiberpuffer befinden.

Ändern der Bildgröße

Wenn Sie die Größe der AOI ändern, achten Sie darauf, dass der aktuelle Bildspeicher ausreichend groß ist. Andernfalls müssen Sie den Bildspeicher neu anlegen (siehe is_AllocImageMem()).

Eine Änderung der Bildgröße beeinflusst die Wertebereiche von Bildwiederholrate und Belichtungszeit. Es wird empfohlen, nach dem Ausführen von is_AOI() folgende Funktionen aufzurufen, um definierte Kameraeinstellungen zu erhalten:

•is_SetFrameRate()

•is_Exposure()

•Wenn die Blitzfunktion verwendet wird: is_IO()

hint_info

Hinweis zur AOI in Verbindung mit hohen Bildraten

Bei sehr kleinen AOI und damit hoher Bildrate (Framerate) und maximal eingestellter möglicher Framerate kann die USB Kamera unter Umständen im freilaufenden Modus (freerun) nur halbe Framerate versenden. Dies ist ein Zeichen für eine kamerainterne Überbelastung. In diesem Falle wird empfohlen die Framerate nur auf maximal 98 % zu stellen.

Weitere AOI-Funktionen

Bei einigen uEye Kameramodellen können weitere spezielle Formen der AOI-Funktion gesetzt werden:

Multi-AOI-Funktion verwenden

Sequenz-AOI-Modus verwenden

IDS Linescan ("AOI-Merge-Modus") konfigurieren

Übergabeparameter

hCam

Handle auf Kamera

pParam

Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist.

nSizeOfParam

Größe des Speicherbereichs in Byte, auf den pParam verweist.

Inhalt der Struktur IS_RECT

INT

s32X

X-Position der AOI

INT

s32Y

Y-Position der AOI

INT

s32Width

Breite der AOI

INT

s32Height

Höhe der AOI

Inhalt der Struktur IS_POINT_2D

INT

s32X

X-Position der AOI

INT

s32Y

Y-Position der AOI

Inhalt der Struktur IS_SIZE_2D

INT

s32Width

Breite der AOI

INT

s32Height

Höhe der AOI

Rückgabewerte

IS_BAD_STRUCTURE_SIZE

Eine interne Struktur hat die falsche Größe.

IS_CANT_ADD_TO_SEQUENCE

Der Bildspeicher befindet sich bereits in der Sequenz und kann nicht doppelt hinzugefügt werden.

IS_CANT_COMMUNICATE_WITH_DRIVER

Kommunikation mit dem Kameratreiber schlug fehl, weil kein Treiber geladen ist.

IS_CANT_OPEN_DEVICE

Ein Versuch die Kamera zu öffnen schlug fehl (Kamera nicht vorhanden oder Fehler beim Initialisieren).

IS_CAPTURE_RUNNING

Es läuft bereits eine Aufnahme, die zuerst beendet werden muss.

IS_DR_CANNOT_CREATE_SURFACE

Bild- oder Overlay-Surface konnten nicht angelegt werden.

IS_DR_CANNOT_CREATE_TEXTURE

Die Textur konnte nicht angelegt werden.

IS_DR_CANNOT_CREATE_VERTEX_BUFFER

Der Vertex-Puffer konnte nicht angelegt werden.

IS_DR_DEVICE_OUT_OF_MEMORY

Nicht genügend Grafikspeicher verfügbar.

IS_DR_LIBRARY_NOT_FOUND

Die DirectRenderer-Bibliothek konnte nicht gefunden werden.

IS_INVALID_BUFFER_SIZE

Der Bildspeicher hat die falsche Größe um das Bild im gewünschten Format aufzunehmen.

IS_INVALID_CAMERA_TYPE

Kameratyp der .ini-Datei stimmt nicht mit dem aktuellen Kameramodell überein.

IS_INVALID_CAPTURE_MODE

Die Funktion kann im aktuellen Betriebsmodus der Kamera (Freilaufend, Trigger oder Standby) nicht ausgeführt werden.

IS_INVALID_CAMERA_HANDLE

Ungültiges Kamera-Handle

IS_INVALID_MEMORY_POINTER

Ungültiger Zeiger oder ungültige Speicher-ID

IS_INVALID_PARAMETER

Einer der übergebenen Parameter ist außerhalb des gültigen Bereichs, oder für diesen Sensor nicht unterstützt, bzw. in diesem Modus nicht zugänglich.

IS_IO_REQUEST_FAILED

Eine IO Anforderung des uEye Treibers schlug fehl. Eventuell passen die Versionen der Dateien ueye_api.dll (API) und ueye_usb.sys bzw. ueye_eth.sys (Treiber) nicht zusammen.

IS_NO_ACTIVE_IMG_MEM

Kein aktivierter Bildspeicher vorhanden. Der Speicher muss mit der Funktion is_SetImageMem() aktiviert werden, oder es muss mit der Funktion is_AddToSequence() eine Sequenz aufgebaut werden.

IS_NO_SUCCESS

Allgemeine Fehlermeldung

IS_NOT_CALIBRATED

Die Kamera enthält keine Kalibrierungsdaten.

IS_NOT_SUPPORTED

Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht.

IS_OUT_OF_MEMORY

Es konnte kein Speicher alloziert werden.

IS_SEQUENCE_BUF_ALREADY_LOCKED

Der Speicher konnte nicht gelockt werden. Der Zeiger auf den Buffer ist ungültig.

IS_SUCCESS

Funktion erfolgreich

IS_TIMED_OUT

Ein Timeout trat auf. Eine Bildaufnahme konnte nicht in der vorgeschriebenen Zeit beendet werden.

IS_TRIGGER_ACTIVATED

Die Funktion ist nicht möglich, da die Kamera auf ein Triggersignal wartet.

Verwandte Funktionen

•is_ImageFormat()

•is_SetBinning()

•is_SetSubSampling()

Beispiel 1 für AOI

// Setzt die Position und Größe des Bildes über ein Objekt vom Typ IS_RECT.
IS_RECT rectAOI;
 
rectAOI.s32X     = 100;
rectAOI.s32Y     = 100;
rectAOI.s32Width = 200;
rectAOI.s32Height = 100;
 
INT nRet = is_AOI( hCam, IS_AOI_IMAGE_SET_AOI, (void*)&rectAOI, sizeof(rectAOI));

Beispiel 2 für AOI

// Gibt die Position und Größe der AOI über ein Objekt vom Typ IS_RECT zurück.
IS_RECT rectAOI;
 
INT nRet = is_AOI(hCam, IS_AOI_IMAGE_GET_AOI, (void*)&rectAOI, sizeof(rectAOI));
if (nRet == IS_SUCCESS)
{
  INT x     = rectAOI.s32X;
  INT y     = rectAOI.s32Y;
  INT width = rectAOI.s32Width;
  INT height = rectAOI.s32Height;
}

Beispiel 3 für AOI

// Gibt über ein UINT Objekt zurück, ob bei der X-Position IS_AOI_IMAGE_POS_ABSOLUTE gesetzt ist.
UINT nAbsPos = 0;
 
INT nRet = is_AOI(hCam, IS_AOI_IMAGE_GET_POS_X_ABS, (void*)&nAbsPos , sizeof(nAbsPos ));
if (nRet == IS_SUCCESS)
{
  if (nAbsPos == IS_AOI_IMAGE_POS_ABSOLUTE)
  {
  // gesetzt
  }
  else if (nAbsPos == 0)
  {
  // nicht gesetzt
  }
}

Beispiel 4 für AOI

// Abfragen, ob das schnelle Verschieben der AOI unterstützt wird
unsigned int fastAOIsupport = 0;
int nRet = is_AOI(m_hCam, IS_AOI_IMAGE_GET_POS_FAST_SUPPORTED, (void*)&fastAOIsupport, sizeof(fastAOIsupport));

Beispiele für das Setzen der AOI-Position im Speicher

x = 100

y = 100

Abb. 192: AOI ohne absolute Positionierung im Speicher

Abb. 192: AOI ohne absolute Positionierung im Speicher

x = 100 | IS_AOI_IMAGE_POS_ABSOLUTE

y = 100

Abb. 193: AOI mit absoluter x-Positionierung im Speicher

Abb. 193: AOI mit absoluter x-Positionierung im Speicher

x = 100 | IS_AOI_IMAGE_POS_ABSOLUTE

y = 100 | IS_AOI_IMAGE_POS_ABSOLUTE

Abb. 194: AOI mit absoluter x- und y-Positionierung im Speicher

Abb. 194: AOI mit absoluter x- und y-Positionierung im Speicher