CameraGrabber.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. #ifndef _MV_CAMERA_GRABBER_H_
  2. #define _MV_CAMERA_GRABBER_H_
  3. #include "CameraDefine.h"
  4. #include "CameraStatus.h"
  5. /// @ingroup GRABBER_CREATE
  6. /// \~chinese
  7. /// \brief 弹出相机列表让用户选择要打开的相机
  8. /// \param [out] Grabber 返回新创建的采集器
  9. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  10. /// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄,进而使用其他SDK API来操作相机。
  11. /// \~english
  12. /// \brief Pop-up camera list allows the user to select the camera to open
  13. /// \param [out] Grabber returns newly created grabber
  14. /// \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.
  15. /// \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.
  16. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_CreateFromDevicePage(
  17. void** Grabber
  18. );
  19. /// @ingroup GRABBER_CREATE
  20. /// \~chinese
  21. /// \brief 使用相机列表索引创建Grabber
  22. /// \param [out] Grabber 返回新创建的采集器
  23. /// \param [in] Index 相机索引
  24. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  25. /// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄,进而使用其他SDK API来操作相机。
  26. /// \~english
  27. /// \brief Creating a Grabber Using a Camera List Index
  28. /// \param [out] Grabber returns newly created grabber
  29. /// \param [in] Index Camera index
  30. /// \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.
  31. /// \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.
  32. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_CreateByIndex(
  33. void** Grabber,
  34. int Index
  35. );
  36. /// @ingroup GRABBER_CREATE
  37. /// \~chinese
  38. /// \brief 使用相机名称创建Grabber
  39. /// \param [out] Grabber 返回新创建的采集器
  40. /// \param [in] Name 相机名称。@link #tSdkCameraDevInfo.acFriendlyName @endlink
  41. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  42. /// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄,进而使用其他SDK API来操作相机。
  43. /// \~english
  44. /// \brief Create a Grabber with a Camera Name
  45. /// \param [out] Grabber returns newly created grabber
  46. /// \param [in] Name Camera name.@link #tSdkCameraDevInfo.acFriendlyName @endlink
  47. /// \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.
  48. /// \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.
  49. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_CreateByName(
  50. void** Grabber,
  51. char* Name
  52. );
  53. /// @ingroup GRABBER_CREATE
  54. /// \~chinese
  55. /// \brief 从设备信息创建Grabber
  56. /// \param [out] Grabber 返回新创建的采集器
  57. /// \param [in] pDevInfo 设备信息。@link #CameraEnumerateDevice @endlink
  58. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  59. /// \note 本函数内部使用了 @link CameraInit @endlink 打开相机,因此可以使用 @link CameraGrabber_GetCameraHandle @endlink 获取相机句柄,进而使用其他SDK API来操作相机。
  60. /// \~english
  61. /// \brief Create Grabber from device info
  62. /// \param [out] Grabber returns newly created grabber
  63. /// \param [in] pDevInfo device information. @link #CameraEnumerateDevice @endlink
  64. /// \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.
  65. /// \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.
  66. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_Create(
  67. void** Grabber,
  68. tSdkCameraDevInfo* pDevInfo
  69. );
  70. /// @ingroup GRABBER_DESTROY
  71. /// \~chinese
  72. /// \brief 销毁Grabber
  73. /// \param [in] Grabber 采集器
  74. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  75. /// \~english
  76. /// \brief Destroy Grabber
  77. /// \param [in] Grabber
  78. /// \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.
  79. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_Destroy(
  80. void* Grabber
  81. );
  82. /// @ingroup GRABBER_CTRL
  83. /// \~chinese
  84. /// \brief 设置预览视频的显示窗口
  85. /// \param [in] Grabber 采集器
  86. /// \param [in] hWnd 显示窗口的窗口句柄
  87. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  88. /// \~english
  89. /// \brief Set the preview video display window
  90. /// \param [in] Grabber
  91. /// \param [in] hWnd window handle of the display window
  92. /// \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.
  93. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetHWnd(
  94. void* Grabber,
  95. HWND hWnd
  96. );
  97. /// @ingroup GRABBER_CTRL
  98. /// \~chinese
  99. /// \brief 设置Grabber取图时使用的优先级
  100. /// \param [in] Grabber 采集器
  101. /// \param [in] Priority 取图优先级 详见:@link #emCameraGetImagePriority @endlink
  102. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  103. /// \~english
  104. /// \brief Sets the priority used by Grabber when fetching graphs
  105. /// \param [in] Grabber
  106. /// \param [in] Priority GetImageBuffer priority, For details see: @link #emCameraGetImagePriority @endlink
  107. /// \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.
  108. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetPriority(
  109. void* Grabber,
  110. UINT Priority
  111. );
  112. /// @ingroup GRABBER_CTRL
  113. /// \~chinese
  114. /// \brief 开始采集
  115. /// \param [in] Grabber 采集器
  116. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  117. /// \note Grabber必须进入采集状态,采集回调、抓图等功能才能正常运作
  118. /// \~english
  119. /// \brief Start Grabber
  120. /// \param [in] Grabber
  121. /// \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.
  122. /// \note Grabber must enter the acquisition state, grab callbacks, snapshot and other functions in order to function properly
  123. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_StartLive(
  124. void* Grabber
  125. );
  126. /// @ingroup GRABBER_CTRL
  127. /// \~chinese
  128. /// \brief 停止采集
  129. /// \param [in] Grabber 采集器
  130. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  131. /// \warning 本函数内部会等待所有回调函数结束后才返回调用者,并且在等待时会派发windows消息。
  132. /// \~english
  133. /// \brief Stop Grabber
  134. /// \param [in] Grabber
  135. /// \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.
  136. /// \warning This function will wait for all callbacks to end before returning to the caller,And it will dispatch windows messages while waiting.
  137. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_StopLive(
  138. void* Grabber
  139. );
  140. /// @ingroup GRABBER_SNAPSHOT
  141. /// \~chinese
  142. /// \brief 同步抓图
  143. /// \param [in] Grabber 采集器
  144. /// \param [out] Image 返回抓取到的图像 \note 需要调用@link #CameraImage_Destroy @endlink释放
  145. /// \param [in] TimeOut 超时时间(毫秒)
  146. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  147. /// \~english
  148. /// \brief Synchronized snapshot
  149. /// \param [in] Grabber
  150. /// \param [out] Image Returns Captured Image \note Need to Call @link #CameraImage_Destroy @endlink Release
  151. /// \param [in] TimeOut Timeout (milliseconds)
  152. /// \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.
  153. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SaveImage(
  154. void* Grabber,
  155. void** Image,
  156. DWORD TimeOut
  157. );
  158. /// @ingroup GRABBER_SNAPSHOT
  159. /// \~chinese
  160. /// \brief 提交一个异步的抓图请求,提交成功后待抓图完成会回调用户设置的完成函数
  161. /// \param [in] Grabber 采集器
  162. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  163. /// \see CameraGrabber_SetSaveImageCompleteCallback
  164. /// \~english
  165. /// \brief Submit an asynchronous snapshot request, complete the user's completion function after the completion of the submission.
  166. /// \param [in] Grabber
  167. /// \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.
  168. /// \see CameraGrabber_SetSaveImageCompleteCallback
  169. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SaveImageAsync(
  170. void* Grabber
  171. );
  172. /// @ingroup GRABBER_SNAPSHOT
  173. /// \~chinese
  174. /// \brief 提交一个异步的抓图请求,提交成功后待抓图完成会回调用户设置的完成函数
  175. /// \param [in] Grabber 采集器
  176. /// \param [in] UserData 用户数据,可使用 @link CameraImage_GetUserData @endlink 从Image获取此值
  177. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  178. /// \see CameraGrabber_SetSaveImageCompleteCallback
  179. /// \~english
  180. /// \brief Submit an asynchronous snapshot request, complete the user's completion function after the completion of the submission.
  181. /// \param [in] Grabber
  182. /// \param [in] UserData user data, which can be obtained from Image using @link CameraImage_GetUserData @endlink
  183. /// \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.
  184. /// \see CameraGrabber_SetSaveImageCompleteCallback
  185. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SaveImageAsyncEx(
  186. void* Grabber,
  187. void* UserData
  188. );
  189. /// @ingroup GRABBER_SNAPSHOT
  190. /// \~chinese
  191. /// \brief 设置异步方式抓图的完成函数
  192. /// \param [in] Grabber 采集器
  193. /// \param [in] Callback 当异步抓图任务完成时被调用
  194. /// \param [in] Context 当Callback被调用时,作为参数传入Callback
  195. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  196. /// \see CameraGrabber_SaveImageAsync CameraGrabber_SaveImageAsyncEx
  197. /// \~english
  198. /// \brief Set the completion function of asynchronous mode snapshot
  199. /// \param [in] Grabber
  200. /// \param [in] Callback Callback is called when the asynchronous snapshot task completes
  201. /// \param [in] Context Passed as a parameter when the Callback is invoked
  202. /// \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.
  203. /// \see CameraGrabber_SaveImageAsync CameraGrabber_SaveImageAsyncEx
  204. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetSaveImageCompleteCallback(
  205. void* Grabber,
  206. pfnCameraGrabberSaveImageComplete Callback,
  207. void* Context
  208. );
  209. /// @ingroup GRABBER_CB
  210. /// \~chinese
  211. /// \brief 设置帧监听函数
  212. /// \param [in] Grabber 采集器
  213. /// \param [in] Listener 监听函数
  214. /// \param [in] Context 当Listener被调用时,作为参数传入Listener
  215. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  216. /// \~english
  217. /// \brief Set frame listening function
  218. /// \param [in] Grabber
  219. /// \param [in] Listener listener function
  220. /// \param [in] Context Passed as a parameter when the Listener is invoked
  221. /// \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.
  222. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetFrameListener(
  223. void* Grabber,
  224. pfnCameraGrabberFrameListener Listener,
  225. void* Context
  226. );
  227. /// @ingroup GRABBER_CB
  228. /// \~chinese
  229. /// \brief 设置RAW数据回调函数
  230. /// \param [in] Grabber 采集器
  231. /// \param [in] Callback Raw回调函数
  232. /// \param [in] Context 当Callback被调用时,作为参数传入Callback
  233. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  234. /// \~english
  235. /// \brief Set RAW data callback function
  236. /// \param [in] Grabber
  237. /// \param [in] Callback Raw data callback function
  238. /// \param [in] Context Passed as a parameter when the Callback is invoked
  239. /// \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.
  240. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetRawCallback(
  241. void* Grabber,
  242. pfnCameraGrabberFrameCallback Callback,
  243. void* Context
  244. );
  245. /// @ingroup GRABBER_CB
  246. /// \~chinese
  247. /// \brief 设置RGB回调函数
  248. /// \param [in] Grabber 采集器
  249. /// \param [in] Callback RGB回调函数
  250. /// \param [in] Context 当Callback被调用时,作为参数传入Callback
  251. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  252. /// \~english
  253. /// \brief Set RGB callback function
  254. /// \param [in] Grabber
  255. /// \param [in] Callback RGB data callback function
  256. /// \param [in] Context Passed as a parameter when the Callback is invoked
  257. /// \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.
  258. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_SetRGBCallback(
  259. void* Grabber,
  260. pfnCameraGrabberFrameCallback Callback,
  261. void* Context
  262. );
  263. /// @ingroup GRABBER_CTRL
  264. /// \~chinese
  265. /// \brief 获取相机句柄
  266. /// \param [in] Grabber 采集器
  267. /// \param [out] hCamera 返回的相机句柄
  268. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  269. /// \~english
  270. /// \brief Get camera handle
  271. /// \param [in] Grabber
  272. /// \param [out] hCamera returned camera handle
  273. /// \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.
  274. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_GetCameraHandle(
  275. void* Grabber,
  276. CameraHandle *hCamera
  277. );
  278. /// @ingroup GRABBER_CTRL
  279. /// \~chinese
  280. /// \brief 获取帧统计信息
  281. /// \param [in] Grabber 采集器
  282. /// \param [out] stat 返回的统计信息
  283. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  284. /// \~english
  285. /// \brief Get frame statistics
  286. /// \param [in] Grabber
  287. /// \param [out] stat returned statistics
  288. /// \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.
  289. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_GetStat(
  290. void* Grabber,
  291. tSdkGrabberStat *stat
  292. );
  293. /// @ingroup GRABBER_CTRL
  294. /// \~chinese
  295. /// \brief 获取相机DevInfo
  296. /// \param [in] Grabber 采集器
  297. /// \param [out] DevInfo 返回的相机DevInfo
  298. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  299. /// \~english
  300. /// \brief Get Camera DevInfo
  301. /// \param [in] Grabber
  302. /// \param [out] DevInfo Returns Camera DevInfo
  303. /// \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.
  304. MVSDK_API CameraSdkStatus __stdcall CameraGrabber_GetCameraDevInfo(
  305. void* Grabber,
  306. tSdkCameraDevInfo *DevInfo
  307. );
  308. #endif // _MV_CAMERA_GRABBER_H_