⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orchid.h

📁 相机传输图像程序源代码 拜耳模式(RAW格式文件)与RGB图像数据互相转换函数库
💻 H
📖 第 1 页 / 共 5 页
字号:

/* -------------------------------------------------------------------------- */

/* ---obsolete--- */
DLLENTRY void WINAPI lvx_SetConnectorList(HLVXTASK hLvxTask, const char* pszList);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_GetConnectorList(HLVXTASK hLvxTask, char* pszList, int iMaxLen);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_ClearConnectorList(HLVXTASK hLvxTask);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_AddConnectorToList(HLVXTASK hLvxTask, const char* pszConnectorName, const char* pszGrabberName, int iGrabberOrder);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_SetShutter(HLVXTASK hLvxTask, const char* pszName);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_GetShutter(HLVXTASK hLvxTask, char* pszName, int iMaxLen);

/* -------------------------------------------------------------------------- */

/** Sets the asynchronous reset mode.
* If the LvxRtAr module is used, the module must have the AR mode set.
* The AR mode is a number from 0 to 7, corresponding the AR Mode in the Camera
* Editor. Most cameras provide 2 modes: Edge Preselect and Pulse Width.\n
* By default the mode is set to 0. \n
* The modes are also listed for each selected camera in the dialog box
* displayed by lvx_DisplayInitialSettingsDialog() method (when the module is
* LvxRtAr)\n
* @note This value is used for the module initialization (using the
*       lvx_Initialize() method). Changing the property value after the module
*       is initialized returns the module to the uninitialized status.
* @note Some cameras need additionally to be set to an appropriate mode
*       by using additional means, for example by setting its DIP switches
*       or by sending them a set of commands over the serial link interface.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask          Handle to LvxRtAr module, created by lvx_OpenTask().
* @param iAsyncResetMode   Number of the AR mode, in range 0-7.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::AsyncResetMode
*/
DLLENTRY void WINAPI lvx_SetAsyncResetMode(HLVXTASK hLvxTask, int iAsyncResetMode);

/* -------------------------------------------------------------------------- */

/** Returns the asynchronous reset mode.
* If the LvxRtAr module is used, the module must have the AR mode set.
* The AR mode is a number from 0 to 7, corresponding the AR Mode in the Camera
* Editor. Most cameras provide 2 modes: Edge Preselect and Pulse Width.\n
* By default the mode is set to 0. \n
* The modes are also listed for each selected camera in the dialog box
* displayed by lvx_DisplayInitialSettingsDialog() method (when the module is
* LvxRtAr)\n
* @note This value is used for the module initialization (using the
*       lvx_Initialize() method). Changing the property value after the module
*       is initialized returns the module to the uninitialized status.
* @note Some cameras need additionally to be set to an appropriate mode
*       by using additional means, for example by setting its DIP switches
*       or by sending them a set of commands over the serial link interface.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask          Handle to LvxRtAr module, created by lvx_OpenTask().
* @return The asynchronous reset mode number, in range 0-7.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::AsyncResetMode
*/
DLLENTRY int  WINAPI lvx_GetAsyncResetMode(HLVXTASK hLvxTask);

/* -------------------------------------------------------------------------- */

/* ---obsolete--- */
DLLENTRY void WINAPI lvx_SetBoardsExtSync(HLVXTASK hLvxTask, BOOL bSet);
/* ---obsolete--- */
DLLENTRY BOOL WINAPI lvx_GetBoardsExtSync(HLVXTASK hLvxTask);

/* -------------------------------------------------------------------------- */

/** Sets the number of frames in the sequence.
*
* The word "Subsequences" has historical reasons, from the analog grabbers
* where multiple cameras could be involved in the acquisition to a sequence.
* On all digital grabbers, as well as GigE and USB cameras and PicPort Elite,
* only single camera can be used in one module and thus the number of subsequences is
* equal to the number of frames. \n
* By setting the subsequences you specify the number of frames in the sequence.
*
* @note This property value is used for the module initialization (using the
*       lvx_Initialize() method). Changing the property value after the module
*       is initialized returns the module to the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask       Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @param iSubsequences  Number of frames in the sequence.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::Subsequences
*/
DLLENTRY void WINAPI lvx_SetSubsequences(HLVXTASK hLvxTask, int iSubsequences);

/* -------------------------------------------------------------------------- */

/** Returns the number of frames in the sequence.
*
* The word "Subsequences" has historical reasons, from the analog grabbers
* where multiple cameras could be involved in the acquisition to a sequence.
* On all digital grabbers, as well as GigE and USB cameras and PicPort Elite,
* only single camera can be used in one module and thus the number of subsequences is
* equal to the number of frames. \n
* By setting the subsequences you specify the number of frames in the sequence.
*
* @note This property value is used for the module initialization (using the
*       lvx_Initialize() method). Changing the property value after the module
*       is initialized returns the module to the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask       Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @return The number of frames in the sequence.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::Subsequences
*/
DLLENTRY int  WINAPI lvx_GetSubsequences(HLVXTASK hLvxTask);

/* -------------------------------------------------------------------------- */

/** Sets the acquisition checkpoints.
*
* Checkpoints are positions, where the acqusition module checks
* the conditions for the next acquisition step. For example if the lvx_GrabContinue()
* was called, the internal flag for continuing is set and so the program continues
* grabbing till the next checkpoint.\n
* The grab notification (see the lvx_SetNotifyCallBack() method) is made
* the checkpoint is reached.\n
* The checkpoint type can be selected from the 2 types:
* - Checkpoint_EndOfFrame
* - Checkpoint_EndOfSequence (this type may not be available on some devices)
*
* @note This property value is used for the module initialization (using the lvx_Initialize()
*       method). Changing the property value after the module is initialized returns the module to
*       the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask     Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @param iCheckpoints Value defining the checkpoint type - use the above mentioned predefined constants.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::Checkpoints
*/
DLLENTRY void WINAPI lvx_SetCheckpoints(HLVXTASK hLvxTask, int iCheckpoints);

/* -------------------------------------------------------------------------- */

/** Returns the acquisition checkpoints type.
*
* Checkpoints are positions, where the acqusition module checks
* the conditions for the next acquisition step. For example if the lvx_GrabContinue()
* was called, the internal flag for continuing is set and so the program continues
* grabbing till the next checkpoint.\n
* The grab notification (see the lvx_SetNotifyCallBack() method) is made
* the checkpoint is reached.\n
* The checkpoint type can be selected from the 2 types:
* - Checkpoint_EndOfFrame
* - Checkpoint_EndOfSequence (this type may not be available on some devices)
*
* @note This property value is used for the module initialization (using the lvx_Initialize()
*       method). Changing the property value after the module is initialized returns the module to
*       the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask     Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @return The acquisition checkpoints type.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::Checkpoints
*/
DLLENTRY int  WINAPI lvx_GetCheckpoints(HLVXTASK hLvxTask);

/* -------------------------------------------------------------------------- */

/** Sets the flow mode.
* The flow mode determines, if the acquisition stops at each checkpoint or not.
* The following values (predefined constants) can be used:
* - lvx_Flow_ContinueOnRequest
* - lvx_Flow_PauseOnRequest
*
* The \b ContinueOnRequest is default flow mode. In this mode the module the acquisition stops on the
* checkpoint, if the internal continue flag is not set by previous lvx_GrabContinue() method call
* or external trigger (see also lvx_ExternalTrigger() ).\n
* In the \b PauseOnRequest mode the acquisition does not stop on the checkpoint, until the internal
* pause flag is set by the lvx_GrabPause() method call. In other words, the acquisition is still
* running in a loop, until it is explicitly paused. The paused acquisition can be then run again by
* calling the lvx_GrabContinue() method.\n
* @note This property value is used for the module initialization (using the lvx_Initialize()
*       method). Changing the property value after the module is initialized returns the module to
*       the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask   Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @param iFlowMode  One of the predefined constant values listed above.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::FlowMode
*/
DLLENTRY void WINAPI lvx_SetFlowMode(HLVXTASK hLvxTask, int iFlowMode);

/* -------------------------------------------------------------------------- */

/** Returns the flow mode.
* The flow mode determines, if the acquisition stops at each checkpoint or not.
* The following values (predefined constants) can be used:
* - lvx_Flow_ContinueOnRequest
* - lvx_Flow_PauseOnRequest
*
* The \b ContinueOnRequest is default flow mode. In this mode the module the acquisition stops on the
* checkpoint, if the internal continue flag is not set by previous lvx_GrabContinue() method call
* or external trigger (see also lvx_ExternalTrigger() ).\n
* In the \b PauseOnRequest mode the acquisition does not stop on the checkpoint, until the internal
* pause flag is set by the lvx_GrabPause() method call. In other words, the acquisition is still
* running in a loop, until it is explicitly paused. The paused acquisition can be then run again by
* calling the lvx_GrabContinue() method.\n
* @note This property value is used for the module initialization (using the lvx_Initialize()
*       method). Changing the property value after the module is initialized returns the module to
*       the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask   Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @return The flow mode.
* @par See also .NET version:
*      LeutronVision::Orchid::LvxRtAr::FlowMode
*/

DLLENTRY int  WINAPI lvx_GetFlowMode(HLVXTASK hLvxTask);

/* -------------------------------------------------------------------------- */

/** Enables double-buffering for a camera in a free-run mode.
*
* The acquisition is controlled by setting an internal continue flag on each checkpoint. When the
* frame  is acquired, the continue flag on
* the checkpoint is evaluated to decide, whether to continue immediately with the acquisition of
* the next frame. This happens in the short time between 2 images. If the flag is not set, then
* the next frame is lost, because setting the continue flag by the lvx_GrabContinue() \b after
* this evaluation means the continue flag is set already for the next checkpoint.\n
* Imagine you want to acquire one frame while another one is inspected; the inspection is
* fast enough to be done during the subsequence acquisition and you do not want to loose any frame.
* For such type of acquisition the internal continue flag on the checkpoint must be set \b before the
* checkpoint is evaluated, i.e. before the acquisition of the current frame is finished.\n
* To start such acquisition, you would have to:
* -# start acquisition of the first frame, wait until the acquisition actually starts and
*    then set the continue flag for the second frame.
* -# Wait for the notification about the first frame completion, after you receive it, you
*    can start processing it, and concurrently with it the second frame is acquired, as the
*    continue flag for it was already set.
* -# If you finish the processing of the first frame before the second frame is
*    completed, you can set the continue flag for the third frame and go to step 2). However,
*    if you finish the processing too late, i.e. after also the second frame is completed,
*    the acquisition is already stopped and some frames lost. To initiate double buffering, you
*    would have to go again to step 1).
*
* The AsynchronousGrab mode simplifies this kind of acquisition; when the lvx_SetAsynchronousGrab()
* property is set to \b TRUE, then each lvx_GrabContinue() command inspects the current status of
* acquisition; if the acquisition is stopped, it initiates grabbing of 2 frames (as in the
* step 1 above); if it is not stopped, it behaves normally, i.e. initiates grabbing of the next
* frame (like in the step 3 above). So with the AsynchronousGrab you can implement acquisition with
* double buffering simply by calling lvx_GrabContinue() to start the acquisition, and then calling
* lvx_GrabContinue() after each frame is processed.\n
* @note When this property is set to TRUE, the following properties must fulfill these conditions:
*       - lvx_SetSubsequences() must be set to a value greater than 1 (at least 2, better 3).
*       - lvx_SetFlowMode() must be set to lvx_Flow_ContinueOnRequest.
*       - lvx_SetCheckpoints() must be set to lvx_Checkpoint_EndOfFrame.
*       - lvx_SetExternalTrigger() must be set to lvx_ExtEv_Ignore. If the
*       ExternalTrigger is set to another value in the run-time, the AsynchronousGrab mode is
*       disabled until the ExternalTrigger is set to lvx_ExtEv_Ignore again. The double buffering

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -