![]() |
![]() |
|---|---|
uEye LE USB 3.1 Gen 1 AF |
uEye LE USB 3.1 Gen 1 AF |
Syntax
INT is_Focus (HIDS hCam, UINT nCommand, void *pParam, UINT nSizeOfParam)
Beschreibung
Bei der uEye LE USB 3.1 Gen 1 AF ist das Fokus-Messfenster eine AOI, die verschoben, vergrößert oder verkleinert werden kann (siehe uEye Cockpit: Eigenschaften - Fokus).
|
Kommt es zu einem Kamera-Reconnect muss die Fokus-AOI wieder neu gesetzt werden. |
Ü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 Struktur AUTOFOCUS_AOI
UINT |
uNumberAOI |
Nummer des Fokus-Messfensters |
IS_RECT |
rcAOI |
Definiert die linke obere Ecke (s32X, s32Y) sowie die Breite (s23Width) und Höhe (s32Height) des Fokus-Messfensters. |
AUTOFOCUS_AOI_WEIGHT |
eWeight |
Definiert die Gewichtung der Zone: •AUTOFOCUS_AOI_WEIGHT_MIDDLE |
Inhalt der Struktur IS_SIZE_2D
INT |
s32Width |
Breite der AOI |
INT |
s32Height |
Höhe der AOI |
Inhalt der Struktur AUTOFOCUS_LIMIT
UINT |
uMin |
Definiert die untere Grenze des Fokussuchbereichs für den Peak-Search-Algorithmus. |
UINT |
uMax |
Definiert die obere Grenze des Fokussuchbereichs für den Peak-Search-Algorithmus. |
Inhalt der Struktur AUTOFOCUS_CALLBACK
IS_AUTOFOCUS_CALLBACK_FUNC |
pfFunc |
•Fokuswert vom Typ UINT •Schärfewert vom Typ INT |
void* |
pContext |
•pContext vom Typ void* |
Rückgabewert
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_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_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_IMAGE_PARAMETER |
Die Fokus-AOI ist ungültig oder passt nicht in die Image-AOI. |
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_SUCCESS |
Allgemeine Fehlermeldung |
IS_NOT_SUPPORTED |
Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht. |
IS_SUCCESS |
Funktion erfolgreich |
UINT supported_sharpness_calculation_algorithm;
INT nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_SUPPORTED_SHARPNESS_CALCULATION_ALGORITHM, &supported_sharpness_calculation_algorithm, sizeof(supported_sharpness_calculation_algorithm));
if (IS_SUCCESS == nRet)
{
UINT sharpness_calculation_algorithm;
if (AUTOFOCUS_SHARPNESS_CALCULATION_ALGORITHM_MEAN_SCORE == (supported_sharpness_calculation_algorithm & AUTOFOCUS_SHARPNESS_CALCULATION_ALGORITHM_MEAN_SCORE))
{
sharpness_calculation_algorithm = AUTOFOCUS_SHARPNESS_CALCULATION_ALGORITHM_MEAN_SCORE;
}
else
{
is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_SHARPNESS_CALCULATION_ALGORITHM_DEFAULT, &sharpness_calculation_algorithm, sizeof(sharpness_calculation_algorithm));
}
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_SHARPNESS_CALCULATION_ALGORITHM, &sharpness_calculation_algorithm, sizeof(sharpness_calculation_algorithm));
if (IS_SUCCESS == nRet)
{
sharpness_calculation_algorithm = 0;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_SHARPNESS_CALCULATION_ALGORITHM, &sharpness_calculation_algorithm, sizeof(sharpness_calculation_algorithm));
if (IS_SUCCESS == nRet)
{
// print sharpness_calculation_algorithm
...
}
}
}
UINT supported_search_peak_algorithm;
INT nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_ONCE_SUPPORTED_PEAK_SEARCH_ALGORITHM, &supported_search_peak_algorithm, sizeof(supported_search_peak_algorithm));
if (IS_SUCCESS == nRet)
{
UINT search_peak_algorithm;
if (AUTOFOCUS_ONCE_PEAK_SEARCH_ALGORITHM_HILL_CLIMBING == (supported_search_peak_algorithm & AUTOFOCUS_ONCE_PEAK_SEARCH_ALGORITHM_HILL_CLIMBING_SEARCH))
{
search_peak_algorithm = AUTOFOCUS_ONCE_PEAK_SEARCH_ALGORITHM_HILL_CLIMBING_SEARCH;
}
else
{
is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_ONCE_PEAK_SEARCH_ALGORITHM_DEFAULT, &search_peak_algorithm, sizeof(search_peak_algorithm));
}
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_ONCE_PEAK_SEARCH_ALGORITHM, &search_peak_algorithm, sizeof(search_peak_algorithm));
if (IS_SUCCESS == nRet)
{
search_peak_algorithm = 0;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_ONCE_PEAK_SEARCH_ALGORITHM, &search_peak_algorithm, sizeof(search_peak_algorithm));
if (IS_SUCCESS == nRet)
{
// print search_peak_algorithm
...
}
}
}
UINT number_of_supported_focus_aois;
INT nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_NUMBER_OF_SUPPORTED_AOIS, &number_of_supported_focus_aois, sizeof(number_of_supported_focus_aois));
if ((IS_SUCCESS == nRet) && (0 < number_of_supported_focus_aois))
{
IS_SIZE_2D focus_aoi_min_size;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_AOI_SIZE_MIN, &focus_aoi_min_size, sizeof(focus_aoi_min_size));
AUTOFOCUS_AOI focus_aoi;
focus_aoi.uNumberAOI = 1;
focus_aoi.rcAOI.s32X = 200;
focus_aoi.rcAOI.s32Y = 200;
focus_aoi.rcAOI.s32Width = focus_aoi_min_size.s32Width;
focus_aoi.rcAOI.s32Height = focus_aoi_min_size.s32Height;
focus_aoi.eWeight = AUTOFOCUS_AOI_WEIGHT_MIDDLE;
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_AOI, &focus_aoi, sizeof(focus_aoi));
if (IS_SUCCESS == nRet)
{
memset(&focus_aoi, 0, sizeof(focus_aoi));
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_AOI, &focus_aoi, sizeof(focus_aoi));
if (IS_SUCCESS == nRet)
{
// print focus_aoi
...
}
}
AUTOFOCUS_AOI_PRESET aoi_preset = AUTOFOCUS_AOI_PRESET_CENTER;
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_AOI_PRESET, &aoi_preset, sizeof(aoi_preset));
if (IS_SUCCESS == nRet)
{
AUTOFOCUS_AOI focus_aoi_preset;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_AOI, &focus_aoi_preset, sizeof(focus_aoi_preset));
if (IS_SUCCESS == nRet)
{
// print focus_aoi_preset
...
}
}
}
AUTOFOCUS_LIMIT autofocus_limit_default;
INT nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_LIMIT_DEFAULT, &autofocus_limit_default, sizeof(autofocus_limit_default));
if (IS_SUCCESS == nRet)
{
AUTOFOCUS_LIMIT autofocus_limit;
autofocus_limit.sMin = -1;
autofocus_limit.sMax = 500;
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_LIMIT, &autofocus_limit, sizeof(autofocus_limit));
if (IS_SUCCESS == nRet)
{
autofocus_limit.sMin = 0;
autofocus_limit.sMax = 0;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_LIMIT, &autofocus_limit, sizeof(autofocus_limit));
if (IS_SUCCESS == nRet)
{
// print autofocus_limit
...
}
}
}
WORD autofocus_lens_response_time_default;
INT nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_LENS_RESPONSE_TIME_DEFAULT, &autofocus_lens_response_time_default, sizeof(autofocus_lens_response_time_default));
if (IS_SUCCESS == nRet)
{
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_LENS_RESPONSE_TIME, &autofocus_lens_response_time_default, sizeof(autofocus_lens_response_time_default));
if (IS_SUCCESS == nRet)
{
WORD autofocus_lens_response_time;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_LENS_RESPONSE_TIME, &autofocus_lens_response_time, sizeof(autofocus_lens_response_time));
if (IS_SUCCESS == nRet)
{
// print autofocus_lens_response_time
...
}
}
}
WORD autofocus_hysteresis_default;
INT nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_HYSTERESIS_DEFAULT, &autofocus_hysteresis_default, sizeof(autofocus_hysteresis_default));
if (IS_SUCCESS == nRet)
{
nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_HYSTERESIS, &autofocus_hysteresis_default, sizeof(autofocus_hysteresis_default));
if (IS_SUCCESS == nRet)
{
WORD autofocus_hysteresis;
nRet = is_Focus(m_hCam, FOC_CMD_GET_AUTOFOCUS_HYSTERESIS, &autofocus_hysteresis, sizeof(autofocus_hysteresis));
if (IS_SUCCESS == nRet)
{
// print autofocus_hysteresis
...
}
}
}
// callback function
void print_focus_sharpness(UINT focus, INT sharpness, void*)
{
// print focus, sharpness
...
}
AUTOFOCUS_CALLBACK autofocus_callback;
autofocus_callback.pfFunc = print_focus_sharpness;
autofocus_callback.pContext = NULL;
INT nRet = is_Focus(m_hCam, FOC_CMD_SET_AUTOFOCUS_CALLBACK, &autofocus_callback, sizeof(autofocus_callback));
if (IS_SUCCESS == nRet)
{
is_Focus(m_hCam, FOC_CMD_SET_ENABLE_AUTOFOCUS_ONCE, NULL, 0);
}