def loop(sock, camera, app, show=True): if show: color_window = NumpyWidget() color_window.show() depth_window = NumpyWidget() depth_window.show() colormap = numpy.float32(matplotlib.cm.jet(numpy.arange(1001) / 1000.0)) n = 0 clients = [] try: mark = time() while True: # check for new clients check_connections(sock, clients) # read and process the camera frame try: frame = camera.read() except RuntimeError as e: logger.error('error while capturing frame') logger.error(traceback.format_exc()) break color_buffer = frame.color.open(PixelFormat.RGB24) color_image = numpy.frombuffer(color_buffer.data(), dtype=numpy.uint8).reshape((color_buffer.height, color_buffer.width, -1)) # BGR -> RGB color_image = color_image[:,:,::-1] try: cloud_buffer = frame.computePointCloud() except RuntimeError as e: logger.warn('{} -> skipping frame'.format(e)) continue cloud = numpy.frombuffer(cloud_buffer, dtype=numpy.float32).reshape((frame.depth.height, frame.depth.width, 3)) # send the frame if clients: send_frame(clients, (color_image, cloud)) # update the view if show and (not clients or n % 10 == 0): color_window.update_frame(color_image) depth_window.update_frame(colormap[numpy.clip(cloud[:,:,2], 0, len(colormap) - 1).astype(numpy.int)]) # process events for the windows app.processEvents() n += 1 if n % 30 == 0: # print some debug stats fps = 30 / (time() - mark) mark = time() logger.debug('{:.1f} fps'.format(fps)) except KeyboardInterrupt: pass for (conn, addr) in clients: conn.close() logger.info('closed connection with {}'.format(addr))
def loop(sock, camera, show=True): if show: from ui.numpy_widget import NumpyWidget import matplotlib.cm from PySide.QtGui import QApplication app = QApplication(sys.argv) color_window = NumpyWidget() color_window.show() depth_window = NumpyWidget() depth_window.show() colormap = numpy.float32(matplotlib.cm.jet( numpy.arange(1001) / 1000.0)) n = 0 clients = [] try: mark = time() while True: # check for new clients check_connections(sock, clients) # read and process the camera frame try: frame = camera.read() except RuntimeError as e: logger.error('error while capturing frame') logger.error(traceback.format_exc()) break color_buffer = frame.color.open(PixelFormat.RGB24) color_image = numpy.frombuffer(color_buffer.data(), dtype=numpy.uint8).reshape( (color_buffer.height, color_buffer.width, -1)) # BGR -> RGB color_image = color_image[:, :, ::-1] try: cloud_buffer = frame.computePointCloud() except RuntimeError as e: logger.warn('{} -> skipping frame'.format(e)) continue cloud = numpy.frombuffer(cloud_buffer, dtype=numpy.float32).reshape( (frame.depth.height, frame.depth.width, 3)) try: depth_uv_buffer = frame.computeDepthUVMap() except RuntimeError as e: logger.warn('{} -> skipping frame'.format(e)) continue depth_uv = numpy.frombuffer(depth_uv_buffer, dtype=numpy.float32).reshape( (frame.depth.height, frame.depth.width, 2)) try: color_uv_buffer = frame.computeColorUVMap() except RuntimeError as e: logger.warn('{} -> skipping frame'.format(e)) continue inverse_uv = numpy.frombuffer(color_uv_buffer, dtype=numpy.float32).reshape( (color_buffer.height, color_buffer.width, 2)) #color_image = numpy.empty((cloud.shape[0], cloud.shape[1], 3), dtype=numpy.uint8) #color_image[:,:] = [ 0, 255, 0 ] #depth_uv = numpy.empty((cloud.shape[0], cloud.shape[1], 2), dtype=numpy.float32) #depth_uv[:,:] = [ -1, -1 ] # send the frame if clients: send_frame(clients, (color_image, cloud, depth_uv, inverse_uv)) # update the view if show and (not clients or n % 10 == 0): color_window.update_frame(color_image) depth_window.update_frame(colormap[numpy.clip( cloud[:, :, 2], 0, len(colormap) - 1).astype(numpy.int)]) # process events for the windows app.processEvents() n += 1 if n % 30 == 0: # print some debug stats fps = 30 / (time() - mark) mark = time() logger.debug('{:.1f} fps'.format(fps)) except KeyboardInterrupt: pass for (conn, addr) in clients: conn.close() logger.info('closed connection with {}'.format(addr))
if __name__ == '__main__': logging.basicConfig( level=logging.DEBUG, format= '%(asctime)-15s %(filename)s:%(lineno)d %(levelname)s: %(message)s') logging.getLogger('OpenGL').setLevel(99) import sys, numpy, matplotlib.cm from PySide.QtGui import QApplication from ui.numpy_widget import NumpyWidget camera = RemoteRawCamera('localhost') app = QApplication(sys.argv) color_window = NumpyWidget() color_window.show() depth_window = NumpyWidget() depth_window.show() colormap = numpy.float32(matplotlib.cm.jet(numpy.arange(1001) / 1000.0)) n = 0 try: mark = time() while True: (color, cloud, _, _) = camera.read() color_window.update_frame(color) depth_window.update_frame(colormap[numpy.clip(
camera = RemoteCamera('localhost', 10000) if "show" in sys.argv or "-show" in sys.argv or "--show" in sys.argv: show = True else: show = False while "show" in sys.argv: sys.argv.remove("show") while "-show" in sys.argv: sys.argv.remove("-show") while "--show" in sys.argv: sys.argv.remove("--show") if show: app = QApplication(sys.argv) color_window = NumpyWidget() color_window.show() depth_window = NumpyWidget() depth_window.show() colormap = numpy.float32(matplotlib.cm.jet(numpy.arange(1001) / 1000.0)) n = 0 try: mark = time() while True: (color, cloud, depth_uv, color_uv) = camera.read() if show: color_window.update_frame(color)