FrameViewer.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from pickle import FALSE, TRUE
  2. import sys
  3. sys.path.append('../../../')
  4. from API.VzenseDS_api import *
  5. import cv2
  6. import time
  7. camera = VzenseTofCam()
  8. camera_count = camera.VZ_GetDeviceCount()
  9. retry_count = 100
  10. while camera_count==0 and retry_count > 0:
  11. retry_count = retry_count-1
  12. camera_count = camera.VZ_GetDeviceCount()
  13. time.sleep(1)
  14. print("scaning...... ",retry_count)
  15. device_info=VzDeviceInfo()
  16. if camera_count > 1:
  17. ret,device_infolist=camera.VZ_GetDeviceInfoList(camera_count)
  18. if ret==0:
  19. device_info = device_infolist[0]
  20. for info in device_infolist:
  21. print('cam uri: ' + str(info.uri))
  22. else:
  23. print(' failed:' , ret)
  24. exit()
  25. elif camera_count == 1:
  26. ret,device_info=camera.VZ_GetDeviceInfo()
  27. if ret==0:
  28. print('cam uri:' + str(device_info.uri))
  29. else:
  30. print(' failed:', ret)
  31. exit()
  32. else:
  33. print("there are no camera found")
  34. exit()
  35. print("uri: "+str(device_info.uri))
  36. ret = camera.VZ_OpenDeviceByUri(device_info.uri)
  37. if ret == 0:
  38. ret = camera.VZ_StartStream()
  39. if ret == 0:
  40. print("start stream successful")
  41. else:
  42. print("VZ_StartStream failed:",ret)
  43. colorSlope = c_uint16(7495)
  44. try:
  45. while 1:
  46. ret, frameready = camera.VZ_GetFrameReady(c_uint16(1000))
  47. if ret !=0:
  48. print("VZ_GetFrameReady failed:",ret)
  49. continue
  50. if frameready.depth:
  51. ret,depthframe = camera.VZ_GetFrame(VzFrameType.VzDepthFrame)
  52. if ret == 0:
  53. frametmp = numpy.ctypeslib.as_array(depthframe.pFrameData, (1, depthframe.width * depthframe.height * 2))
  54. frametmp.dtype = numpy.uint16
  55. frametmp.shape = (depthframe.height, depthframe.width)
  56. #convert ushort value to 0xff is just for display
  57. img = numpy.int32(frametmp)
  58. img = img*255/colorSlope
  59. img = numpy.clip(img, 0, 255)
  60. img = numpy.uint8(img)
  61. frametmp = cv2.applyColorMap(img, cv2.COLORMAP_RAINBOW)
  62. cv2.imshow("Depth Image", frametmp)
  63. else:
  64. print("get depth frame failed:",ret)
  65. if frameready.ir:
  66. ret,irframe = camera.VZ_GetFrame(VzFrameType.VzIRFrame)
  67. if ret == 0:
  68. frametmp = numpy.ctypeslib.as_array(irframe.pFrameData, (1, irframe.dataLen))
  69. frametmp.dtype = numpy.uint8
  70. frametmp.shape = (irframe.height, irframe.width)
  71. cv2.imshow("IR Image", frametmp)
  72. else:
  73. print("get ir frame failed:",ret)
  74. if frameready.color:
  75. ret,rgbframe = camera.VZ_GetFrame(VzFrameType.VzColorFrame)
  76. if ret == 0:
  77. frametmp = numpy.ctypeslib.as_array(rgbframe.pFrameData, (1, rgbframe.width * rgbframe.height * 3))
  78. frametmp.dtype = numpy.uint8
  79. frametmp.shape = (rgbframe.height, rgbframe.width,3)
  80. cv2.imshow("RGB Image", frametmp)
  81. else:
  82. print("---end---")
  83. key = cv2.waitKey(1)
  84. if key == 27:
  85. cv2.destroyAllWindows()
  86. print("---end---")
  87. break;
  88. except Exception as e :
  89. print(e)
  90. finally :
  91. print('end')
  92. else:
  93. print('VZ_OpenDeviceByUri failed: ' + str(ret))