![]() |
![]() |
|---|---|
USB 2.0 USB 3.x GigE |
USB 2.0 USB 3.x GigE |
Syntax
INT is_ImageFormat (HIDS hCam, UINT nCommand, void *pParam, UINT nSizeOfParam)
Beschreibung
Mit is_ImageFormat() kann eine Liste möglicher Bildgrößen (Profile) abgefragt und ein neues Profil gesetzt werden. Dies ist hilfreich bei Sensoren, die keine freie Wahl des Bildausschnitts (area of interest) oder Bildformate unterstützen. Der Treiber stellt die gewählte Bildgröße über die Funktionen AOI, Binning/Subsampling oder Skalierer so ein, dass die bestmögliche Bildqualität erreicht wird. Hierbei ist das Ziel eine möglichst geringe Datenrate bei einem maximalen Sichtbereich ("field of view") zu erzielen. Für eine Liste unterstützter Bildprofile siehe Kamera- und Sensordaten.
Ü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.
Ü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 Liste IMAGE_FORMAT_LIST
UINT |
nSizeOfListEntry |
Muss mit der Größe eines Listenelements in Byte vorbelegt werden |
UINT |
nNumListElements |
Muss mit der Anzahl von Listenelementen vorbelegt werden (aus IMGFRMT_CMD_GET_NUM_ENTRIES) |
UINT |
nReserved[4] |
Reserviert |
IMAGE_FORMAT_INFO |
FormatInfo[0] |
Erstes Listenelement. Nach dem Füllen der Liste durch IMGFRMT_CMD_GET_LIST enthält diese weitere Elemente FormatInfo[1]…FormatInfo[nNumListElements-1]. |
Inhalt des Listenelements IMAGE_FORMAT_INFO
INT |
nFormatID |
Format-ID des angegebenen Profils |
UINT |
nWidth |
Breite des Bildausschnitts |
UINT |
nHeight |
Höhe des Bildausschnitts |
INT |
nX0 |
Startpunkt des Bildausschnitts (X) |
INT |
nY0 |
Startpunkt des Bildausschnitts (Y) |
UINT |
nSupportedCaptureModes |
In diesem Format unterstützte Bildaufnahmemodi (siehe Tabelle unten) |
UINT |
nBinningMode |
Verwendeter Binning-Modus |
UINT |
nSubsamplingMode |
Verwendeter Subsampling-Modus |
IS_CHAR |
strFormatName[64] |
Beschreibung des Formats |
double |
dSensorScalerFactor |
Verwendeter Skalierungsfaktor bei Sensoren mit Scaler-Funktion. |
UINT |
nReserved[22] |
Reserviert |
Mögliche Werte für CAPTUREMODE
CAPTMODE_SINGLE |
Freilaufende Bildaufnahme, Einzelbild (Freerun Snap) |
CAPTMODE_FREERUN |
Freilaufende Bildaufnahme, kontinuierlich (Freerun Live) |
CAPTMODE_TRIGGER_SOFT_SINGLE |
Softwaregetriggerte Bildaufnahme, Einzelbild |
CAPTMODE_TRIGGER_SOFT_CONTINUOUS |
Softwaregetriggerte Bildaufnahme, kontinuierlich |
CAPTMODE_TRIGGER_HW_SINGLE |
Hardwaregetriggerte Bildaufnahme, Einzelbild |
CAPTMODE_TRIGGER_HW_CONTINUOUS |
Hardwaregetriggerte Bildaufnahme, kontinuierlich |
Für weitere Informationen zu den Bildaufnahmemodi siehe auch Kapitel Grundlagen: Betriebsmodi.
Rückgabewert
IS_CANT_ADD_TO_SEQUENCE |
Der Bildspeicher befindet sich bereits in der Sequenz und kann nicht doppelt hinzugefügt werden. |
IS_BAD_STRUCTURE_SIZE |
Eine interne Struktur hat die falsche Größe. |
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_MODE |
Kamera im Standby, Funktion nicht erlaubt |
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_INVALID_PIXEL_CLOCK |
Diese Einstellung ist bei dem aktuell eingestellten Pixeltakt nicht möglich. |
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_NULL_POINTER |
Ungültiges Array |
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
HIDS hCam;
char strCamFileName[256];
int nRet;
// Anzahl verfügbarer Formate und Größe der Liste abfragen
UINT count;
UINT bytesNeeded = sizeof(IMAGE_FORMAT_LIST);
nRet = is_ImageFormat(hCam, IMGFRMT_CMD_GET_NUM_ENTRIES, &count, sizeof(count));
bytesNeeded += (count - 1) * sizeof(IMAGE_FORMAT_INFO);
void* ptr = malloc(bytesNeeded);
// Liste anlegen und füllen
IMAGE_FORMAT_LIST* pformatList = (IMAGE_FORMAT_LIST*) ptr;
pformatList->nSizeOfListEntry = sizeof(IMAGE_FORMAT_INFO);
pformatList->nNumListElements = count;
nRet = is_ImageFormat(hCam, IMGFRMT_CMD_GET_LIST, pformatList, bytesNeeded);
// Bildspeicher anlegen
char* pMem = NULL;
int memID = 0;
// Jedes Format nacheinander setzen und ein Bild aufnehmen
IMAGE_FORMAT_INFO formatInfo;
for (int i = 0; i < count; i++)
{
formatInfo = pformatList->FormatInfo[i];
int width = formatInfo.nWidth;
int height = formatInfo.nHeight;
// Bildspeicher für aktuelles Format anlegen, Format setzen
nRet = is_AllocImageMem(hCam, width, height, 24, &pMem, &memID);
nRet = is_SetImageMem(hCam, pMem, memID);
nRet = is_ImageFormat(hCam, IMGFRMT_CMD_SET_FORMAT, &formatInfo.nFormatID, sizeof(formatInfo.nFormatID));
// Bild aufnehmen
nRet = is_FreezeVideo(hCam, IS_WAIT);
}