Example #1
0
    def __init__(self):
        dmcam.init(None)
        dmcam.log_cfg(dmcam.LOG_LEVEL_INFO, dmcam.LOG_LEVEL_DEBUG,
                      dmcam.LOG_LEVEL_NONE)

        self.dev = dmcam.dev_open(None)
        assert self.dev is not None

        # - set capture config  -
        cap_cfg = dmcam.cap_cfg_t()
        cap_cfg.cache_frames_cnt = 10  # framebuffer = 10
        cap_cfg.on_error = None  # use cap_set_callback_on_error to set cb
        cap_cfg.on_frame_rdy = None  # use cap_set_callback_on_frame_ready to set cb
        cap_cfg.en_save_replay = True  # True = save replay, False = not save
        cap_cfg.en_save_dist_u16 = False  # True to save dist stream for openni replay
        cap_cfg.en_save_gray_u16 = False  # True to save gray stream for openni replay
        cap_cfg.fname_replay = os.fsencode(
            "dm_replay.oni")  # set replay filename

        dmcam.cap_config_set(self.dev, cap_cfg)
        #dmcam.cap_set_frame_buffer(self.dev, None, 10 * 320 * 240 * 4 * 2)

        self.frame_data = bytearray(320 * 240 * 4 * 4)
        self.frame_dist = [np.zeros((240, 320))]
        self.frame_gray = [np.zeros((240, 320))]
        self.frame_cnt = 0

        self.start()
        return
Example #2
0
    def __init__(self):
        dmcam.init(None)
        dmcam.log_cfg(dmcam.LOG_LEVEL_INFO, dmcam.LOG_LEVEL_DEBUG, dmcam.LOG_LEVEL_NONE)

        self.dev = dmcam.dev_open(None)
        assert self.dev is not None

        dmcam.cap_set_frame_buffer(self.dev, None, 10 * 320 * 240 * 4 * 2)

        self.frame_data = bytearray(320 * 240 * 4 * 4)
        self.frame_dist = [np.zeros((240, 320))]
        self.frame_gray = [np.zeros((240, 320))]
        self.frame_cnt = 0

        self.start()
        return
Example #3
0
    print(" No device found")
    sys.exit(1)

print("found %d device" % len(devs))

for i in range(len(devs)):
    print("DMCAM#%d [%03d:%03d:%03d]: VENDOR=%s, PROD=%s, SERIAL=%s" %
          (i, devs[i].if_info.info.usb.usb_port_num,
           devs[i].if_info.info.usb.usb_bus_num,
           devs[i].if_info.info.usb.usb_dev_addr, devs[i].vendor,
           devs[i].product, devs[i].serial))

print(" Open dmcam device ..")
# open the first device
# dev = dmcam.dev_open(devs[0])
dev = dmcam.dev_open(None)
assert dev is not None

# print(" Config capture param ..")
# set 10 frames framebuffer
dmcam.cap_set_frame_buffer(dev, None, 10 * 320 * 240 * 4)
# dmcam.cap_set_callback_on_frame_ready(dev, on_frame_rdy)
dmcam.cap_set_callback_on_error(dev, on_cap_err)

# write to ramp mode
# dmcam.reg_batch_write(dev, dmcam.DEV_REG_TFC_DE, 0x31, np.array([0x1803], dtype="uint32"))
# regval = dmcam.reg_batch_read(dev, dmcam.DEV_REG_TFC_DE, 0x31, 1)
# print(regval)
# assert regval[0] == 0x1803

print(" Set paramters ...")
Example #4
0
# -- list device

print(" Scanning dmcam device ..")
devs = dmcam.dev_list()
if devs is None:
    print(" No device found")
    sys.exit(1)

print("found %d device" % len(devs))

for i in range(len(devs)):
    print("#%d: %s" % (i, dmcam.dev_get_uri(devs[i], 256)[0]))

print(" Open dmcam device ..")
# open the first device
dev = dmcam.dev_open(devs[0])
# Or open by URI
# dev = dmcam.dev_open_by_uri(br"xxx")
assert dev is not None

# - set capture config  -
cap_cfg = dmcam.cap_cfg_t()
cap_cfg.cache_frames_cnt = 10  # framebuffer = 10
cap_cfg.on_error = None        # use cap_set_callback_on_error to set cb
cap_cfg.on_frame_rdy = None    # use cap_set_callback_on_frame_ready to set cb
cap_cfg.en_save_replay = False  # True = save replay, False = not save
cap_cfg.en_save_dist_u16 = False # True to save dist stream for openni replay
cap_cfg.en_save_gray_u16 = False # True to save gray stream for openni replay
cap_cfg.fname_replay = os.fsencode("dm_replay.oni")  # set replay filename

dmcam.cap_config_set(dev, cap_cfg)
Example #5
0
    def _start_dmcam(self):
        if self.dev is None:
            log.info(" Open dmcam device ..")
            self.dev = dmcam.dev_open(None)
            if self.dev.version.ver.sw_ver < 154:
                print(u"仅支持固件版本不低于于154的模组设备,当前固件版本{},请升级模组固件,详见Readme".format(
                    self.dev.version.ver.sw_ver))
                input("")
                # win32api.MessageBox(0, u"仅支持固件版本不低于于154的模组设备,当前固件版本{},请升级模组固件,详见Readme".format(self.dev.version.ver.sw_ver), u"错误", win32con.MB_OK)
                sys.exit(0)
            # - set capture config  -
            cap_cfg = dmcam.cap_cfg_t()
            cap_cfg.cache_frames_cnt = 10  # framebuffer = 10
            cap_cfg.on_error = None  # use cap_set_callback_on_error to set cb
            cap_cfg.on_frame_rdy = None  # use cap_set_callback_on_frame_ready to set cb
            cap_cfg.en_save_replay = False  # True = save replay, False = not save
            cap_cfg.en_save_dist_u16 = False  # True to save dist stream for openni replay
            cap_cfg.en_save_gray_u16 = False  # True to save gray stream for openni replay
            cap_cfg.fname_replay = os.fsencode(
                "dm_replay.oni")  # set replay filename

            log.info("Set parameters ...")
            wparams = {
                dmcam.PARAM_INTG_TIME:
                dmcam.param_val_u(),
                dmcam.PARAM_FRAME_RATE:
                dmcam.param_val_u(),
                dmcam.PARAM_FRAME_FORMAT:
                dmcam.param_val_u(),
                # dmcam.PARAM_HDR_INTG_TIME: dmcam.param_val_u(),
                dmcam.PARAM_MOD_FREQ:
                dmcam.param_val_u()
            }

            wparams[dmcam.PARAM_INTG_TIME].intg.intg_us = 250
            # wparams[dmcam.PARAM_HDR_INTG_TIME].intg.intg_us = 1000
            wparams[dmcam.PARAM_FRAME_RATE].frame_rate.fps = 20
            wparams[dmcam.PARAM_FRAME_FORMAT].frame_format.format = 2
            wparams[dmcam.PARAM_MOD_FREQ].mod_freq = 12000000
            amp_min_val = dmcam.filter_args_u()
            amp_min_val.min_amp = 60
            intg_auto_arg = dmcam.filter_args_u()
            intg_auto_arg.sat_ration = 100  # 自动曝光设置的值

            if not dmcam.filter_enable(self.dev,
                                       dmcam.DMCAM_FILTER_ID_AMP, amp_min_val,
                                       sys.getsizeof(amp_min_val)):
                log.error("set amp to %d %% failed" % 0)
            if not dmcam.filter_disable(self.dev,
                                        dmcam.DMCAM_FILTER_ID_MEDIAN):
                log.error("disable Median Filter failed")
            # hdr = dmcam.filter_args_u()
            if not dmcam.filter_disable(self.dev, dmcam.DMCAM_FILTER_ID_HDR):
                log.error("set hdr failed")
            if not dmcam.filter_enable(
                    self.dev, dmcam.DMCAM_FILTER_ID_AUTO_INTG, intg_auto_arg,
                    sys.getsizeof(intg_auto_arg)):
                log.error("set auto intg failed")
                print("set auto intg failed")
            else:
                print("set auto intg")

            if not dmcam.param_batch_set(self.dev, wparams):
                log.error("set parameter failed")
            assert self.dev is not None
        if not self.status:
            log.info("Start capture ...")
            dmcam.cap_start(self.dev)
            self.status = True