CameraImage.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. #ifndef _MV_CAMERA_IMAGE_H_
  2. #define _MV_CAMERA_IMAGE_H_
  3. #include "CameraDefine.h"
  4. #include "CameraStatus.h"
  5. /// @ingroup MV_IMAGE
  6. /// \~chinese
  7. /// \brief 创建一个新的Image
  8. /// \param [out] Image 新创建的图片
  9. /// \param [in] pFrameBuffer 帧数据
  10. /// \param [in] pFrameHead 帧头
  11. /// \param [in] bCopy TRUE: 复制出一份新的帧数据 FALSE: 不复制,直接使用pFrameBuffer指向的缓冲区
  12. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  13. /// \~english
  14. /// \brief Create a new Image
  15. /// \param [out] Image Newly Created Image
  16. /// \param [in] pFrameBuffer frame data
  17. /// \param [in] pFrameHead Frame Header
  18. /// \param [in] bCopy TRUE: Copy a new frame data FALSE: Do not copy, directly use the buffer pointed to by pFrameBuffer
  19. /// \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.
  20. MVSDK_API CameraSdkStatus __stdcall CameraImage_Create(
  21. void** Image,
  22. BYTE *pFrameBuffer,
  23. tSdkFrameHead* pFrameHead,
  24. BOOL bCopy
  25. );
  26. /// @ingroup MV_IMAGE
  27. /// \~chinese
  28. /// \brief 创建一个空的Image
  29. /// \param [out] Image 新创建的图片
  30. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  31. /// \~english
  32. /// \brief Create an empty Image
  33. /// \param [out] Image Newly Created Image
  34. /// \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.
  35. MVSDK_API CameraSdkStatus __stdcall CameraImage_CreateEmpty(
  36. void** Image
  37. );
  38. /// @ingroup MV_IMAGE
  39. /// \~chinese
  40. /// \brief 销毁Image
  41. /// \param [in] Image
  42. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  43. /// \~english
  44. /// \brief Destroy Image
  45. /// \param [in] Image
  46. /// \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.
  47. MVSDK_API CameraSdkStatus __stdcall CameraImage_Destroy(
  48. void* Image
  49. );
  50. /// @ingroup MV_IMAGE
  51. /// \~chinese
  52. /// \brief 从Image获取帧数据和帧头
  53. /// \param [in] Image
  54. /// \param [out] DataBuffer 帧数据
  55. /// \param [out] Head 帧头
  56. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  57. /// \~english
  58. /// \brief Get frame data and frame header from Image
  59. /// \param [in] Image
  60. /// \param [out] DataBuffer Frame Data
  61. /// \param [out] Head header
  62. /// \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.
  63. MVSDK_API CameraSdkStatus __stdcall CameraImage_GetData(
  64. void* Image,
  65. BYTE** DataBuffer,
  66. tSdkFrameHead** Head
  67. );
  68. /// @ingroup MV_IMAGE
  69. /// \~chinese
  70. /// \brief 获取Image的用户自定义数据
  71. /// \param [in] Image
  72. /// \param [out] UserData 返回用户自定义数据
  73. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  74. /// \~english
  75. /// \brief Get User's Custom Data of Image
  76. /// \param [in] Image
  77. /// \param [out] UserData returns user-defined data
  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 CameraImage_GetUserData(
  80. void* Image,
  81. void** UserData
  82. );
  83. /// @ingroup MV_IMAGE
  84. /// \~chinese
  85. /// \brief 设置Image的用户自定义数据
  86. /// \param [in] Image
  87. /// \param [in] UserData 用户自定义数据
  88. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  89. /// \~english
  90. /// \brief Set user-defined data for Image
  91. /// \param [in] Image
  92. /// \param [in] UserData User-defined data
  93. /// \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.
  94. MVSDK_API CameraSdkStatus __stdcall CameraImage_SetUserData(
  95. void* Image,
  96. void* UserData
  97. );
  98. /// @ingroup MV_IMAGE
  99. /// \~chinese
  100. /// \brief 判断一个Image是否为空
  101. /// \param [in] Image
  102. /// \param [out] IsEmpty 为空返回:TRUE(1) 否则返回:FALSE(0)
  103. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  104. /// \~english
  105. /// \brief Determine if an Image is empty
  106. /// \param [in] Image
  107. /// \param [out] IsEmpty Empty Returns: TRUE(1) Otherwise returns: FALSE(0)
  108. /// \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.
  109. MVSDK_API CameraSdkStatus __stdcall CameraImage_IsEmpty(
  110. void* Image,
  111. BOOL* IsEmpty
  112. );
  113. /// @ingroup MV_IMAGE
  114. /// \~chinese
  115. /// \brief 绘制Image到指定窗口
  116. /// \param [in] Image
  117. /// \param [in] hWnd 目的窗口
  118. /// \param [in] Algorithm 缩放算法 0:快速但质量稍差 1:速度慢但质量好
  119. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  120. /// \~english
  121. /// \brief Draw Image to the specified window
  122. /// \param [in] Image
  123. /// \param [in] hWnd destination window
  124. /// \param [in] Algorithm scaling algorithm 0:fast but slightly worse quality 1:slower but better quality
  125. /// \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.
  126. MVSDK_API CameraSdkStatus __stdcall CameraImage_Draw(
  127. void* Image,
  128. HWND hWnd,
  129. int Algorithm
  130. );
  131. /// @ingroup MV_IMAGE
  132. /// \~chinese
  133. /// \brief 拉升绘制Image到指定窗口
  134. /// \param [in] Image
  135. /// \param [in] hWnd 目的窗口
  136. /// \param [in] Algorithm 缩放算法 0:快速但质量稍差 1:速度慢但质量好
  137. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  138. /// \~english
  139. /// \brief Pull up drawing Image to the specified window
  140. /// \param [in] Image
  141. /// \param [in] hWnd destination window
  142. /// \param [in] Algorithm scaling algorithm 0:fast but slightly worse quality 1:slower but better quality
  143. /// \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.
  144. MVSDK_API CameraSdkStatus __stdcall CameraImage_DrawFit(
  145. void* Image,
  146. HWND hWnd,
  147. int Algorithm
  148. );
  149. /// @ingroup MV_IMAGE
  150. /// \~chinese
  151. /// \brief 绘制Image到指定DC
  152. /// \param [in] Image
  153. /// \param [in] hDC 目的DC
  154. /// \param [in] Algorithm 缩放算法 0:快速但质量稍差 1:速度慢但质量好
  155. /// \param [in] xDst 目标矩形的左上角X坐标
  156. /// \param [in] yDst 目标矩形的左上角Y坐标
  157. /// \param [in] cxDst 目标矩形的宽度
  158. /// \param [in] cyDst 目标矩形的高度
  159. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  160. /// \~english
  161. /// \brief Draw Image to specified DC
  162. /// \param [in] Image
  163. /// \param [in] hDC destination DC
  164. /// \param [in] Algorithm scaling algorithm 0:fast but slightly worse quality 1:slower but better quality
  165. /// \param [in] xDst The X coordinate of the upper left corner of the target rectangle
  166. /// \param [in] yDst The Y coordinate of the upper left corner of the target rectangle
  167. /// \param [in] cxDst Width of target rectangle
  168. /// \param [in] cyDst Height of target rectangle
  169. /// \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.
  170. MVSDK_API CameraSdkStatus __stdcall CameraImage_DrawToDC(
  171. void* Image,
  172. HDC hDC,
  173. int Algorithm,
  174. int xDst,
  175. int yDst,
  176. int cxDst,
  177. int cyDst
  178. );
  179. /// @ingroup MV_IMAGE
  180. /// \~chinese
  181. /// \brief 拉升绘制Image到指定DC
  182. /// \param [in] Image
  183. /// \param [in] hDC 目的DC
  184. /// \param [in] Algorithm 缩放算法 0:快速但质量稍差 1:速度慢但质量好
  185. /// \param [in] xDst 目标矩形的左上角X坐标
  186. /// \param [in] yDst 目标矩形的左上角Y坐标
  187. /// \param [in] cxDst 目标矩形的宽度
  188. /// \param [in] cyDst 目标矩形的高度
  189. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  190. /// \~english
  191. /// \brief Pull up drawing Image to specified DC
  192. /// \param [in] Image
  193. /// \param [in] hDC destination DC
  194. /// \param [in] Algorithm scaling algorithm 0:fast but slightly worse quality 1:slower but better quality
  195. /// \param [in] xDst The X coordinate of the upper left corner of the target rectangle
  196. /// \param [in] yDst The Y coordinate of the upper left corner of the target rectangle
  197. /// \param [in] cxDst Width of target rectangle
  198. /// \param [in] cyDst Height of target rectangle
  199. /// \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.
  200. MVSDK_API CameraSdkStatus __stdcall CameraImage_DrawToDCFit(
  201. void* Image,
  202. HDC hDC,
  203. int Algorithm,
  204. int xDst,
  205. int yDst,
  206. int cxDst,
  207. int cyDst
  208. );
  209. /// @ingroup MV_IMAGE
  210. /// \~chinese
  211. /// \brief 绘制Image到指定窗口(不缩放)
  212. /// \param [in] Image
  213. /// \param [in] hWnd 目的窗口
  214. /// \param [in] xDst 目标矩形的左上角X坐标
  215. /// \param [in] yDst 目标矩形的左上角Y坐标
  216. /// \param [in] cxDst 目标矩形的宽度
  217. /// \param [in] cyDst 目标矩形的高度
  218. /// \param [in] xSrc 图像矩形的左上角X坐标
  219. /// \param [in] ySrc 图像矩形的左上角Y坐标
  220. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  221. /// \~english
  222. /// \brief Draw Image to specified window (without scaling)
  223. /// \param [in] Image
  224. /// \param [in] hWnd destination window
  225. /// \param [in] xDst The X coordinate of the upper left corner of the target rectangle
  226. /// \param [in] yDst The Y coordinate of the upper left corner of the target rectangle
  227. /// \param [in] cxDst Width of target rectangle
  228. /// \param [in] cyDst Height of target rectangle
  229. /// \param [in] xSrc X coordinate of the upper left corner of the image rectangle
  230. /// \param [in] ySrc Y coordinate of the upper left corner of the image rectangle
  231. /// \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.
  232. MVSDK_API CameraSdkStatus __stdcall CameraImage_BitBlt(
  233. void* Image,
  234. HWND hWnd,
  235. int xDst,
  236. int yDst,
  237. int cxDst,
  238. int cyDst,
  239. int xSrc,
  240. int ySrc
  241. );
  242. /// @ingroup MV_IMAGE
  243. /// \~chinese
  244. /// \brief 绘制Image到指定DC(不缩放)
  245. /// \param [in] Image
  246. /// \param [in] hDC 目的DC
  247. /// \param [in] xDst 目标矩形的左上角X坐标
  248. /// \param [in] yDst 目标矩形的左上角Y坐标
  249. /// \param [in] cxDst 目标矩形的宽度
  250. /// \param [in] cyDst 目标矩形的高度
  251. /// \param [in] xSrc 图像矩形的左上角X坐标
  252. /// \param [in] ySrc 图像矩形的左上角Y坐标
  253. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  254. /// \~english
  255. /// \brief Draw Image to specified DC (without scaling)
  256. /// \param [in] Image
  257. /// \param [in] hDC destination DC
  258. /// \param [in] xDst The X coordinate of the upper left corner of the target rectangle
  259. /// \param [in] yDst The Y coordinate of the upper left corner of the target rectangle
  260. /// \param [in] cxDst Width of target rectangle
  261. /// \param [in] cyDst Height of target rectangle
  262. /// \param [in] xSrc X coordinate of the upper left corner of the image rectangle
  263. /// \param [in] ySrc Y coordinate of the upper left corner of the image rectangle
  264. /// \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.
  265. MVSDK_API CameraSdkStatus __stdcall CameraImage_BitBltToDC(
  266. void* Image,
  267. HDC hDC,
  268. int xDst,
  269. int yDst,
  270. int cxDst,
  271. int cyDst,
  272. int xSrc,
  273. int ySrc
  274. );
  275. /// @ingroup MV_IMAGE
  276. /// \~chinese
  277. /// \brief 以bmp格式保存Image
  278. /// \param [in] Image
  279. /// \param [in] FileName 文件名
  280. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  281. /// \~english
  282. /// \brief Save Image as bmp
  283. /// \param [in] Image
  284. /// \param [in] FileName file name
  285. /// \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.
  286. MVSDK_API CameraSdkStatus __stdcall CameraImage_SaveAsBmp(
  287. void* Image,
  288. char const* FileName
  289. );
  290. /// @ingroup MV_IMAGE
  291. /// \~chinese
  292. /// \brief 以jpg格式保存Image
  293. /// \param [in] Image
  294. /// \param [in] FileName 文件名
  295. /// \param [in] Quality 保存质量(1-100),100为质量最佳但文件也最大
  296. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  297. /// \~english
  298. /// \brief Save Image as jpg
  299. /// \param [in] Image
  300. /// \param [in] FileName file name
  301. /// \param [in] Quality save quality (1-100), 100 is the best quality but the file is also the largest
  302. /// \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.
  303. MVSDK_API CameraSdkStatus __stdcall CameraImage_SaveAsJpeg(
  304. void* Image,
  305. char const* FileName,
  306. BYTE Quality
  307. );
  308. /// @ingroup MV_IMAGE
  309. /// \~chinese
  310. /// \brief 以png格式保存Image
  311. /// \param [in] Image
  312. /// \param [in] FileName 文件名
  313. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  314. /// \~english
  315. /// \brief Save Image as png
  316. /// \param [in] Image
  317. /// \param [in] FileName file name
  318. /// \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.
  319. MVSDK_API CameraSdkStatus __stdcall CameraImage_SaveAsPng(
  320. void* Image,
  321. char const* FileName
  322. );
  323. /// @ingroup MV_IMAGE
  324. /// \~chinese
  325. /// \brief 以raw格式保存Image
  326. /// \param [in] Image
  327. /// \param [in] FileName 文件名
  328. /// \param [in] Format 0: 8Bit Raw 1: 16Bit Raw
  329. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  330. /// \~english
  331. /// \brief Save Image as raw
  332. /// \param [in] Image
  333. /// \param [in] FileName file name
  334. /// \param [in] Format 0: 8Bit Raw 1: 16Bit Raw
  335. /// \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.
  336. MVSDK_API CameraSdkStatus __stdcall CameraImage_SaveAsRaw(
  337. void* Image,
  338. char const* FileName,
  339. int Format
  340. );
  341. /// @ingroup MV_IMAGE
  342. /// \~chinese
  343. /// \brief 从Image创建一个IPicture
  344. /// \param [in] Image
  345. /// \param [out] NewPic 新创建的IPicture
  346. /// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。
  347. /// \~english
  348. /// \brief Create an IPicture from an Image
  349. /// \param [in] Image
  350. /// \param [out] NewPic Newly created IPicture
  351. /// \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.
  352. MVSDK_API CameraSdkStatus __stdcall CameraImage_IPicture(
  353. void* Image,
  354. IPicture** NewPic
  355. );
  356. #endif // _MV_CAMERA_IMAGE_H_