VzenseDS_api.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. from SDK.Vzense.VzenseDS_define import *
  2. import platform
  3. import os
  4. import ctypes
  5. from ctypes import *
  6. gCallbackFuncList=[]
  7. class VzenseTofCam():
  8. device_handle = c_void_p(0)
  9. def __init__(self):
  10. system_ = platform.system().lower()
  11. machine_ = platform.machine().lower()
  12. architecture_ = platform.architecture()[0]
  13. # print('system:',system_)
  14. # print('machine_:',machine_)
  15. # print('architecture:',architecture_)
  16. if system_ == 'linux':
  17. if machine_ == 'x86_64':
  18. os_info = os.uname()
  19. # print('os_info:',type(os_info))
  20. system_info = os_info.version
  21. # print('version:',system_info)
  22. if system_info.find('18.04') != -1 or system_info.find('20.04') != -1:
  23. libpath = os.path.dirname(os.path.abspath(__file__))+"/Ubuntu18.04/Lib/libNebula_api.so"
  24. # print("load lib from ", libpath)
  25. self.vz_cam_lib = cdll.LoadLibrary(libpath)
  26. else:
  27. libpath = os.path.dirname(os.path.abspath(__file__))+"/Ubuntu16.04/Lib/libNebula_api.so"
  28. # print(libpath)
  29. self.vz_cam_lib = cdll.LoadLibrary(libpath)
  30. elif machine_ == 'aarch64':
  31. libpath = os.path.dirname(os.path.abspath(__file__))+"/AArch64/Lib/libNebula_api.so"
  32. # print(libpath)
  33. self.vz_cam_lib = cdll.LoadLibrary(libpath)
  34. else:
  35. # print('do not supported OS', system_, machine_)
  36. exit()
  37. elif platform.system() == 'Windows':
  38. if machine_ == 'amd64':
  39. if architecture_ == '64bit':
  40. libpath = os.path.dirname(os.path.abspath(__file__))+"/Windows/Bin/x64/Nebula_api.dll"
  41. # print(libpath)
  42. self.vz_cam_lib = cdll.LoadLibrary(libpath)
  43. else:
  44. libpath = os.path.dirname(os.path.abspath(__file__))+"/Windows/Bin/x86/Nebula_api.dll"
  45. # print(libpath)
  46. self.vz_cam_lib = cdll.LoadLibrary(libpath)
  47. else:
  48. # print('do not supported OS', system_, machine_)
  49. exit()
  50. else:
  51. # print('do not supported OS', system_, machine_)
  52. exit()
  53. self.device_handle = c_void_p(0)
  54. self.vz_cam_lib.VZ_Initialize()
  55. def __del__(self):
  56. self.vz_cam_lib.VZ_Shutdown()
  57. def VZ_GetSDKVersion(self):
  58. tmp = c_char * 64
  59. version = tmp()
  60. return self.vz_cam_lib.VZ_GetSDKVersion(version),version.value
  61. def VZ_GetDeviceCount(self):
  62. count = c_int()
  63. self.vz_cam_lib.VZ_GetDeviceCount(byref(count))
  64. return count.value
  65. def VZ_GetDeviceInfoList(self, cam_count = 1):
  66. tmp = VzDeviceInfo* cam_count
  67. device_infolist = tmp()
  68. return self.vz_cam_lib.VZ_GetDeviceInfoList(cam_count, device_infolist),device_infolist
  69. def VZ_GetDeviceInfo(self, cam_index = 0):
  70. device_info = VzDeviceInfo()
  71. return self.vz_cam_lib.VZ_GetDeviceInfo(cam_index,byref(device_info)), device_info
  72. def VZ_OpenDeviceByUri(self, uri=c_char_p()):
  73. if uri:
  74. return self.vz_cam_lib.VZ_OpenDeviceByUri(uri, byref(self.device_handle))
  75. else:
  76. return VzReturnStatus.VzRetInputPointerIsNull
  77. def VZ_OpenDeviceByAlias(self, alias=c_char_p()):
  78. if alias:
  79. return self.vz_cam_lib.VZ_OpenDeviceByAlias(alias, byref(self.device_handle))
  80. else:
  81. return VzReturnStatus.VzRetInputPointerIsNull
  82. def VZ_OpenDeviceByIP(self, ip=c_char_p()):
  83. if ip:
  84. return self.vz_cam_lib.VZ_OpenDeviceByIP(ip, byref(self.device_handle))
  85. else:
  86. return VzReturnStatus.VzRetInputPointerIsNull, 0
  87. def VZ_CloseDevice(self):
  88. return self.vz_cam_lib.VZ_CloseDevice(byref(self.device_handle))
  89. def VZ_StartStream(self):
  90. return self.vz_cam_lib.VZ_StartStream(self.device_handle)
  91. def VZ_StopStream(self):
  92. return self.vz_cam_lib.VZ_StopStream(self.device_handle)
  93. def VZ_GetFrameReady(self,waitTime = c_uint16(33)):
  94. frameready = VzFrameReady()
  95. return self.vz_cam_lib.VZ_GetFrameReady(self.device_handle, waitTime, byref(frameready)), frameready
  96. def VZ_GetFrame(self, frametype = VzFrameType.VzDepthFrame):
  97. Vzframe = VzFrame()
  98. return self.vz_cam_lib.VZ_GetFrame(self.device_handle, frametype.value, byref(Vzframe)), Vzframe
  99. def VZ_SetWorkMode(self, mode = VzWorkMode.ActiveMode):
  100. return self.vz_cam_lib.VZ_SetWorkMode(self.device_handle, mode.value)
  101. def VZ_GetWorkMode(self):
  102. mode = VzWorkMode(0)
  103. return self.vz_cam_lib.VZ_GetWorkMode(self.device_handle, byref(mode)), mode
  104. def VZ_SetSoftwareSlaveTrigger(self):
  105. return self.vz_cam_lib.VZ_SetSoftwareSlaveTrigger(self.device_handle)
  106. def VZ_RebootDevie(self):
  107. return self.vz_cam_lib.VZ_RebootDevie(self.device_handle)
  108. def VZ_GetSensorIntrinsicParameters(self, sensorType = VzSensorType.VzToFSensor):
  109. CameraParameters = VzSensorIntrinsicParameters()
  110. return self.vz_cam_lib.VZ_GetSensorIntrinsicParameters(self.device_handle, sensorType.value, byref(CameraParameters)), CameraParameters
  111. def VZ_GetSensorExtrinsicParameters(self):
  112. CameraExtrinsicParameters = VzSensorExtrinsicParameters()
  113. return self.vz_cam_lib.VZ_GetSensorExtrinsicParameters(self.device_handle, byref(CameraExtrinsicParameters)), CameraExtrinsicParameters
  114. def VZ_GetFirmwareVersion(self):
  115. tmp = c_char * 64
  116. fw = tmp()
  117. return self.vz_cam_lib.VZ_GetFirmwareVersion(self.device_handle, fw, 63),fw.value
  118. def VZ_GetDeviceMACAddress(self):
  119. tmp = c_char * 18
  120. mac = tmp()
  121. return self.vz_cam_lib.VZ_GetDeviceMACAddress(self.device_handle, mac), mac.value
  122. def VZ_SetIRGMMGain(self, gmmgain = c_uint8(20)):
  123. return self.vz_cam_lib.VZ_SetIRGMMGain(self.device_handle, gmmgain)
  124. def VZ_GetIRGMMGain(self):
  125. gmmgain = c_uint8(1)
  126. return self.vz_cam_lib.VZ_GetIRGMMGain(self.device_handle, byref(gmmgain)), gmmgain.value
  127. def VZ_SetColorPixelFormat(self,pixelFormat=VzPixelFormat.VzPixelFormatBGR888):
  128. return self.vz_cam_lib.VZ_SetColorPixelFormat(self.device_handle, pixelFormat)
  129. def VZ_SetColorResolution(self, w = c_int32(1600), h = c_int32(1200)):
  130. return self.vz_cam_lib.VZ_SetColorResolution(self.device_handle, w, h)
  131. def VZ_GetColorResolution(self):
  132. w = c_int32(1600)
  133. h = c_int32(1200)
  134. return self.vz_cam_lib.VZ_GetColorResolution(self.device_handle, byref(w), byref(h)), w, h
  135. def VZ_SetFrameRate(self, value = c_uint8(30)):
  136. return self.vz_cam_lib.VZ_SetFrameRate(self.device_handle, value)
  137. def VZ_GetFrameRate(self):
  138. value = c_uint8(1)
  139. return self.vz_cam_lib.VZ_GetFrameRate(self.device_handle, byref(value)), value.value
  140. def VZ_SetExposureControlMode(self, sensorType = VzSensorType.VzToFSensor, mode = VzExposureControlMode.VzExposureControlMode_Manual):
  141. return self.vz_cam_lib.VZ_SetExposureControlMode(self.device_handle, sensorType.value, mode.value)
  142. def VZ_SetExposureTime(self, sensorType = VzSensorType.VzToFSensor, params = c_int32(0)):
  143. ExposureTime = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Manual.value,params)
  144. return self.vz_cam_lib.VZ_SetExposureTime(self.device_handle, sensorType.value, ExposureTime)
  145. def VZ_GetExposureTime(self, sensorType = VzSensorType.VzToFSensor):
  146. params = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Manual.value,0)
  147. return self.vz_cam_lib.VZ_GetExposureTime(self.device_handle, sensorType.value, byref(params)), params
  148. def VZ_SetTimeFilterParams(self, params = VzTimeFilterParams()):
  149. return self.vz_cam_lib.VZ_SetTimeFilterParams(self.device_handle, params)
  150. def VZ_GetTimeFilterParams(self):
  151. params = VzTimeFilterParams()
  152. return self.vz_cam_lib.VZ_GetTimeFilterParams(self.device_handle, byref(params)),params
  153. def VZ_SetConfidenceFilterParams(self, params = VzConfidenceFilterParams()):
  154. return self.vz_cam_lib.VZ_SetConfidenceFilterParams(self.device_handle, params)
  155. def VZ_GetConfidenceFilterParams(self):
  156. params = VzConfidenceFilterParams()
  157. return self.vz_cam_lib.VZ_GetConfidenceFilterParams(self.device_handle, byref(params)),params
  158. def VZ_SetFlyingPixelFilterParams(self, params = VzFlyingPixelFilterParams()):
  159. return self.vz_cam_lib.VZ_SetFlyingPixelFilterParams(self.device_handle, params)
  160. def VZ_GetFlyingPixelFilterParams(self):
  161. params = VzFlyingPixelFilterParams()
  162. return self.vz_cam_lib.VZ_GetFlyingPixelFilterParams(self.device_handle, byref(params)),params
  163. def VZ_SetFillHoleFilterEnabled(self, enable = c_bool(True)):
  164. return self.vz_cam_lib.VZ_SetFillHoleFilterEnabled(self.device_handle, enable)
  165. def VZ_GetFillHoleFilterEnabled(self):
  166. enable = c_bool(True)
  167. return self.vz_cam_lib.VZ_GetFillHoleFilterEnabled(self.device_handle, byref(enable)),enable.value
  168. def VZ_SetSpatialFilterEnabled(self, enable = c_bool(True)):
  169. return self.vz_cam_lib.VZ_SetSpatialFilterEnabled(self.device_handle, enable)
  170. def VZ_GetSpatialFilterEnabled(self):
  171. enable = c_bool(True)
  172. return self.vz_cam_lib.VZ_GetSpatialFilterEnabled(self.device_handle, byref(enable)),enable.value
  173. def VZ_SetTransformColorImgToDepthSensorEnabled(self, enabled = c_bool(True)):
  174. return self.vz_cam_lib.VZ_SetTransformColorImgToDepthSensorEnabled(self.device_handle, enabled)
  175. def VZ_GetTransformColorImgToDepthSensorEnabled(self):
  176. enabled = c_bool(True)
  177. return self.vz_cam_lib.VZ_GetTransformColorImgToDepthSensorEnabled(self.device_handle, byref(enabled)),enabled
  178. def VZ_SetTransformDepthImgToColorSensorEnabled(self, enabled = c_bool(True)):
  179. return self.vz_cam_lib.VZ_SetTransformDepthImgToColorSensorEnabled(self.device_handle, enabled)
  180. def VZ_GetTransformDepthImgToColorSensorEnabled(self):
  181. enabled = c_bool(True)
  182. return self.vz_cam_lib.VZ_GetTransformDepthImgToColorSensorEnabled(self.device_handle, byref(enabled)),enabled
  183. def VZ_ConvertDepthFrameToPointCloudVector(self, depthFrame = VzFrame()):
  184. len = depthFrame.width*depthFrame.height
  185. tmp =VzVector3f*len
  186. pointlist = tmp()
  187. return self.vz_cam_lib.VZ_ConvertDepthFrameToPointCloudVector(self.device_handle, byref(depthFrame) ,pointlist),pointlist
  188. def VZ_SetHotPlugStatusCallback(self,callbackfunc= c_void_p):
  189. callbackFunc_= ctypes.CFUNCTYPE(c_void_p,POINTER(VzDeviceInfo),c_int32)(callbackfunc)
  190. gCallbackFuncList.append(callbackFunc_)
  191. return self.vz_cam_lib.VZ_SetHotPlugStatusCallback(callbackFunc_)
  192. def VZ_GetManaulMaxExposureTime(self):
  193. tmp = r"Py_ToFExposureTimeMax"
  194. propertyKey = (c_char * 100)(*bytes(tmp, 'utf-8'))
  195. maxExposureTime = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Manual.value)
  196. return self.vz_cam_lib.VZ_GetProperty(self.device_handle, byref(propertyKey), byref(maxExposureTime),8),maxExposureTime.exposureTime
  197. def VZ_SetParamsByJson(self, imgpath):
  198. pimgpath = (c_char * 1000)(*bytes(imgpath, 'utf-8'))
  199. return self.vz_cam_lib.VZ_SetParamsByJson(self.device_handle, byref(pimgpath))
  200. def VZ_SetColorGain(self, params = c_float(1.0)):
  201. return self.vz_cam_lib.VZ_SetColorGain(self.device_handle, params)
  202. def VZ_GetColorGain(self):
  203. tmp = c_float*1
  204. params = tmp()
  205. return self.vz_cam_lib.VZ_GetColorGain(self.device_handle, params), params
  206. def VZ_GetProperty(self, propertyKey=c_char_p(), pData= c_void_p, dataSize = c_int32(8)):
  207. return self.vz_cam_lib.VZ_GetProperty(self.device_handle, propertyKey, pData, dataSize),pData
  208. def VZ_GetAutoMaxExposureTime(self):
  209. tmp = r"Py_RGBExposureTimeMax"
  210. propertyKey = (c_char * 100)(*bytes(tmp, 'utf-8'))
  211. maxExposureTime = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Auto.value)
  212. return self.vz_cam_lib.VZ_GetProperty(self.device_handle, byref(propertyKey), byref(maxExposureTime),
  213. 8), maxExposureTime.exposureTime
  214. def VZ_GetManualMaxExposureTime(self):
  215. tmp = r"Py_RGBExposureTimeMax"
  216. propertyKey = (c_char * 100)(*bytes(tmp, 'utf-8'))
  217. maxExposureTime = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Manual.value)
  218. return self.vz_cam_lib.VZ_GetProperty(self.device_handle, byref(propertyKey), byref(maxExposureTime),
  219. 8), maxExposureTime.exposureTime
  220. def VZ_SetAutoExposureTime(self, sensorType = VzSensorType.VzColorSensor, params = c_int32(0)):
  221. ExposureTime = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Auto.value,params)
  222. return self.vz_cam_lib.VZ_SetExposureTime(self.device_handle, sensorType.value, ExposureTime)
  223. def VZ_GetAutoExposureTime(self, sensorType = VzSensorType.VzColorSensor):
  224. params = VzExposureTimeParams(VzExposureControlMode.VzExposureControlMode_Auto.value,0)
  225. return self.vz_cam_lib.VZ_GetExposureTime(self.device_handle, sensorType.value, byref(params)), params