예제 #1
0
def Photo(e, tred, token, flag):
    try:
        pipe = rs.pipeline()
        color = rs.colorizer()
        ctx = rs.context()
        dev = ctx.query_devices()
        i = 0
        while True:
            if dev[i].get_info(rs.camera_info.ip_address) == tred["IP"]:
                break
            i = i + 1
            if i == len(dev):
                raise Exception('This camera is not avaiable')
        cfg = rs.config()
        cfg.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
        cfg.enable_device(dev[i].get_info(rs.camera_info.serial_number))
        print("3D cam started.")
        #Getting the depth sensor's depth scale (see rs-align example for explanation)
        while e.is_set():
            if (synchronizer.Synchro(token) == 1):
                try:
                    pipe.start(cfg)
                    # This call waits until a new coherent set of frames is available on a device
                    # Calls to get_frame_data(...) and get_frame_timestamp(...) on a device will return stable values until wait_for_frames(...) is called
                    for j in range(0, 15):
                        frames = pipe.wait_for_frames()
                    depth_frame = frames.get_depth_frame()
                    filename = "3D_%d" % (int(time.time()))
                    if (flag == 1):
                        depth_col = color.colorize(depth_frame)
                        depth_data = np.asanyarray(depth_col.get_data(),
                                                   dtype=np.uint16)
                        Save.Save(filename, depth_data)
                    else:
                        depth_data = np.asanyarray(depth_frame.get_data(),
                                                   dtype=np.uint16)
                        Save.Savebw(filename, depth_data)
                    print("immagine 3d")
                    tred["acquiredImages"] = tred["acquiredImages"] + 1
                    tred["timestamp"] = str(time.gmtime().tm_year) + "-" + str(
                        time.gmtime().tm_mon) + "-" + str(
                            time.gmtime().tm_mday) + "T" + str(
                                time.gmtime().tm_hour) + ":" + str(
                                    time.gmtime().tm_min) + ":" + str(
                                        time.gmtime().tm_sec)
                    pipe.stop()
                    synchronizer.Update()
                except Exception as exc:
                    tred["error"] = str(exc)
                    synchronizer.Update()
                    break
    except Exception as err:
        tred["error"] = str(err)
        tred["status"] = "error"
        synchronizer.removefromQueue(token)
        e.clear()