Files
vision_hero/others/include/camera/CameraGrabber.h

334 lines
16 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _MV_CAMERA_GRABBER_H_
#define _MV_CAMERA_GRABBER_H_
#include "CameraDefine.h"
#include "CameraStatus.h"
/// @ingroup GRABBER_CREATE
/// \~chinese
/// \brief 弹出相机列表让用户选择要打开的相机
/// \param [out] Grabber 返回新创建的采集器
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄进而使用其他SDK API来操作相机。
/// \~english
/// \brief Pop-up camera list allows the user to select the camera to open
/// \param [out] Grabber returns newly created grabber
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \note This function uses @link CameraInit @endlink internally to open the camera, so you can use @link CameraGrabber_GetCameraHandle @endlink to get the camera handle and use other SDK APIs to operate the camera.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_CreateFromDevicePage(
void** Grabber
);
/// @ingroup GRABBER_CREATE
/// \~chinese
/// \brief 使用相机列表索引创建Grabber
/// \param [out] Grabber 返回新创建的采集器
/// \param [in] Index 相机索引
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄进而使用其他SDK API来操作相机。
/// \~english
/// \brief Creating a Grabber Using a Camera List Index
/// \param [out] Grabber returns newly created grabber
/// \param [in] Index Camera index
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \note This function uses @link CameraInit @endlink internally to open the camera, so you can use @link CameraGrabber_GetCameraHandle @endlink to get the camera handle and use other SDK APIs to operate the camera.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_CreateByIndex(
void** Grabber,
int Index
);
/// @ingroup GRABBER_CREATE
/// \~chinese
/// \brief 使用相机名称创建Grabber
/// \param [out] Grabber 返回新创建的采集器
/// \param [in] Name 相机名称。@link #tSdkCameraDevInfo.acFriendlyName @endlink
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄进而使用其他SDK API来操作相机。
/// \~english
/// \brief Create a Grabber with a Camera Name
/// \param [out] Grabber returns newly created grabber
/// \param [in] Name Camera name.@link #tSdkCameraDevInfo.acFriendlyName @endlink
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \note This function uses @link CameraInit @endlink internally to open the camera, so you can use @link CameraGrabber_GetCameraHandle @endlink to get the camera handle and use other SDK APIs to operate the camera.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_CreateByName(
void** Grabber,
char* Name
);
/// @ingroup GRABBER_CREATE
/// \~chinese
/// \brief 从设备信息创建Grabber
/// \param [out] Grabber 返回新创建的采集器
/// \param [in] pDevInfo 设备信息。@link #CameraEnumerateDevice @endlink
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄进而使用其他SDK API来操作相机。
/// \~english
/// \brief Create Grabber from device info
/// \param [out] Grabber returns newly created grabber
/// \param [in] pDevInfo device information. @link #CameraEnumerateDevice @endlink
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \note This function uses @link CameraInit @endlink internally to open the camera, so you can use @link CameraGrabber_GetCameraHandle @endlink to get the camera handle and use other SDK APIs to operate the camera.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_Create(
void** Grabber,
tSdkCameraDevInfo* pDevInfo
);
/// @ingroup GRABBER_DESTROY
/// \~chinese
/// \brief 销毁Grabber
/// \param [in] Grabber 采集器
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Destroy Grabber
/// \param [in] Grabber
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_Destroy(
void* Grabber
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 设置预览视频的显示窗口
/// \param [in] Grabber 采集器
/// \param [in] hWnd 显示窗口的窗口句柄
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Set the preview video display window
/// \param [in] Grabber
/// \param [in] hWnd window handle of the display window
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetHWnd(
void* Grabber,
HWND hWnd
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 设置Grabber取图时使用的优先级
/// \param [in] Grabber 采集器
/// \param [in] Priority 取图优先级 详见:@link #emCameraGetImagePriority @endlink
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Sets the priority used by Grabber when fetching graphs
/// \param [in] Grabber
/// \param [in] Priority GetImageBuffer priority, For details see: @link #emCameraGetImagePriority @endlink
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetPriority(
void* Grabber,
UINT Priority
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 开始采集
/// \param [in] Grabber 采集器
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \note Grabber必须进入采集状态采集回调、抓图等功能才能正常运作
/// \~english
/// \brief Start Grabber
/// \param [in] Grabber
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \note Grabber must enter the acquisition state, grab callbacks, snapshot and other functions in order to function properly
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_StartLive(
void* Grabber
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 停止采集
/// \param [in] Grabber 采集器
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \warning 本函数内部会等待所有回调函数结束后才返回调用者,并且在等待时会派发windows消息。
/// \~english
/// \brief Stop Grabber
/// \param [in] Grabber
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \warning This function will wait for all callbacks to end before returning to the caller,And it will dispatch windows messages while waiting.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_StopLive(
void* Grabber
);
/// @ingroup GRABBER_SNAPSHOT
/// \~chinese
/// \brief 同步抓图
/// \param [in] Grabber 采集器
/// \param [out] Image 返回抓取到的图像 \note 需要调用@link #CameraImage_Destroy @endlink释放
/// \param [in] TimeOut 超时时间(毫秒)
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Synchronized snapshot
/// \param [in] Grabber
/// \param [out] Image Returns Captured Image \note Need to Call @link #CameraImage_Destroy @endlink Release
/// \param [in] TimeOut Timeout (milliseconds)
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SaveImage(
void* Grabber,
void** Image,
DWORD TimeOut
);
/// @ingroup GRABBER_SNAPSHOT
/// \~chinese
/// \brief 提交一个异步的抓图请求,提交成功后待抓图完成会回调用户设置的完成函数
/// \param [in] Grabber 采集器
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \see CameraGrabber_SetSaveImageCompleteCallback
/// \~english
/// \brief Submit an asynchronous snapshot request, complete the user's completion function after the completion of the submission.
/// \param [in] Grabber
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \see CameraGrabber_SetSaveImageCompleteCallback
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SaveImageAsync(
void* Grabber
);
/// @ingroup GRABBER_SNAPSHOT
/// \~chinese
/// \brief 提交一个异步的抓图请求,提交成功后待抓图完成会回调用户设置的完成函数
/// \param [in] Grabber 采集器
/// \param [in] UserData 用户数据,可使用 @link CameraImage_GetUserData @endlink 从Image获取此值
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \see CameraGrabber_SetSaveImageCompleteCallback
/// \~english
/// \brief Submit an asynchronous snapshot request, complete the user's completion function after the completion of the submission.
/// \param [in] Grabber
/// \param [in] UserData user data, which can be obtained from Image using @link CameraImage_GetUserData @endlink
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \see CameraGrabber_SetSaveImageCompleteCallback
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SaveImageAsyncEx(
void* Grabber,
void* UserData
);
/// @ingroup GRABBER_SNAPSHOT
/// \~chinese
/// \brief 设置异步方式抓图的完成函数
/// \param [in] Grabber 采集器
/// \param [in] Callback 当异步抓图任务完成时被调用
/// \param [in] Context 当Callback被调用时作为参数传入Callback
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \see CameraGrabber_SaveImageAsync CameraGrabber_SaveImageAsyncEx
/// \~english
/// \brief Set the completion function of asynchronous mode snapshot
/// \param [in] Grabber
/// \param [in] Callback Callback is called when the asynchronous snapshot task completes
/// \param [in] Context Passed as a parameter when the Callback is invoked
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
/// \see CameraGrabber_SaveImageAsync CameraGrabber_SaveImageAsyncEx
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetSaveImageCompleteCallback(
void* Grabber,
pfnCameraGrabberSaveImageComplete Callback,
void* Context
);
/// @ingroup GRABBER_CB
/// \~chinese
/// \brief 设置帧监听函数
/// \param [in] Grabber 采集器
/// \param [in] Listener 监听函数
/// \param [in] Context 当Listener被调用时作为参数传入Listener
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Set frame listening function
/// \param [in] Grabber
/// \param [in] Listener listener function
/// \param [in] Context Passed as a parameter when the Listener is invoked
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetFrameListener(
void* Grabber,
pfnCameraGrabberFrameListener Listener,
void* Context
);
/// @ingroup GRABBER_CB
/// \~chinese
/// \brief 设置RAW数据回调函数
/// \param [in] Grabber 采集器
/// \param [in] Callback Raw回调函数
/// \param [in] Context 当Callback被调用时作为参数传入Callback
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Set RAW data callback function
/// \param [in] Grabber
/// \param [in] Callback Raw data callback function
/// \param [in] Context Passed as a parameter when the Callback is invoked
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetRawCallback(
void* Grabber,
pfnCameraGrabberFrameCallback Callback,
void* Context
);
/// @ingroup GRABBER_CB
/// \~chinese
/// \brief 设置RGB回调函数
/// \param [in] Grabber 采集器
/// \param [in] Callback RGB回调函数
/// \param [in] Context 当Callback被调用时作为参数传入Callback
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Set RGB callback function
/// \param [in] Grabber
/// \param [in] Callback RGB data callback function
/// \param [in] Context Passed as a parameter when the Callback is invoked
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetRGBCallback(
void* Grabber,
pfnCameraGrabberFrameCallback Callback,
void* Context
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 获取相机句柄
/// \param [in] Grabber 采集器
/// \param [out] hCamera 返回的相机句柄
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Get camera handle
/// \param [in] Grabber
/// \param [out] hCamera returned camera handle
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_GetCameraHandle(
void* Grabber,
CameraHandle *hCamera
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 获取帧统计信息
/// \param [in] Grabber 采集器
/// \param [out] stat 返回的统计信息
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Get frame statistics
/// \param [in] Grabber
/// \param [out] stat returned statistics
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_GetStat(
void* Grabber,
tSdkGrabberStat *stat
);
/// @ingroup GRABBER_CTRL
/// \~chinese
/// \brief 获取相机DevInfo
/// \param [in] Grabber 采集器
/// \param [out] DevInfo 返回的相机DevInfo
/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
/// \~english
/// \brief Get Camera DevInfo
/// \param [in] Grabber
/// \param [out] DevInfo Returns Camera DevInfo
/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h.
MVSDK_API CameraSdkStatus __stdcall CameraGrabber_GetCameraDevInfo(
void* Grabber,
tSdkCameraDevInfo *DevInfo
);
#endif // _MV_CAMERA_GRABBER_H_