dm camera python扩展
dmcam的Python项目详细描述
简介
dmcam的python扩展是smarttof sdk的一部分,它是为python程序员与smarttof模块交互而开发的。
快速示例
importsys,osimportnumpyasnpimporttimeimportdmcam# -- init the lib with default log filedmcam.init(None)# -- init with specified log file# dmcam.init("test.log")# -- set debug leveldmcam.log_cfg(dmcam.LOG_LEVEL_INFO,dmcam.LOG_LEVEL_DEBUG,dmcam.LOG_LEVEL_NONE)# -- list deviceprint(" Scanning dmcam device ..")devs=dmcam.dev_list()ifdevsisNone:print(" No device found")sys.exit(1)print("found %d device"%len(devs))foriinrange(len(devs)):print("#%d: %s"%(i,dmcam.dev_get_uri(devs[i],256)[0]))print(" Open dmcam device ..")# open the first devicedev=dmcam.dev_open(devs[0])# Or open by URI# dev = dmcam.dev_open_by_uri("xxxx")assertdevisnotNone# - set capture config -cap_cfg=dmcam.cap_cfg_t()cap_cfg.cache_frames_cnt=10# framebuffer = 10cap_cfg.on_error=None# use cap_set_callback_on_error to set cbcap_cfg.on_frame_rdy=None# use cap_set_callback_on_frame_ready to set cbcap_cfg.en_save_replay=True# True = save replay, False = not savecap_cfg.en_save_dist_u16=False# True to save dist stream for openni replaycap_cfg.en_save_gray_u16=False# True to save gray stream for openni replaycap_cfg.fname_replay=os.fsencode("dm_replay.oni")# set replay filenamedmcam.cap_config_set(dev,cap_cfg)# dmcam.cap_set_callback_on_frame_ready(dev, on_frame_rdy)# dmcam.cap_set_callback_on_error(dev, on_cap_err)print(" Set paramters ...")wparams={dmcam.PARAM_INTG_TIME:dmcam.param_val_u(),dmcam.PARAM_FRAME_RATE:dmcam.param_val_u(),}wparams[dmcam.PARAM_INTG_TIME].intg.intg_us=1000wparams[dmcam.PARAM_FRAME_RATE].frame_rate.fps=20ifnotdmcam.param_batch_set(dev,wparams):print(" set parameter failed")print(" Start capture ...")dmcam.cap_start(dev)f=bytearray(320*240*4*2)print(" sampling 100 frames ...")count=0run=Truewhilerun:# get one framefinfo=dmcam.frame_t()ret=dmcam.cap_get_frames(dev,1,f,finfo)# print("get %d frames" % ret)ifret>0:w=finfo.frame_info.widthh=finfo.frame_info.heightprint(" frame @ %d, %d, %dx%d"%(finfo.frame_info.frame_idx,finfo.frame_info.frame_size,w,h))dist_cnt,dist=dmcam.frame_get_distance(dev,w*h,f,finfo.frame_info)gray_cnt,gray=dmcam.frame_get_gray(dev,w*h,f,finfo.frame_info)# dist = dmcam.raw2dist(int(len(f) / 4), f)# gray = dmcam.raw2gray(int(len(f) / 4), f)count+=1ifcount>=100:breakelse:breaktime.sleep(0.01)# breakprint(" Stop capture ...")dmcam.cap_stop(dev)print(" Close dmcam device ..")dmcam.dev_close(dev)dmcam.uninit()
更改日志
- 建议将设备固件升级到1.70版本,以使用此sdk
- API更改
- 删除不推荐的dmcam_cmap_float
- 改变结构
- 删除筛选器ID dmcam u filter u id binning
- 新增:支持索尼IMX556的双频
- 新建:支持装箱模式
- epc驱动程序:2x2、4x4和2x4
- IMX驱动程序:2x2、4x4和8x8
- 新功能:基于以太网的TOF摄像头支持
- 增强:使用带参数id param\u roi的参数集/获取api设置roi和binning,而不是使用筛选界面。
- 增强:更好地支持HDR/Dual Freq/Binning模式下的重播
- 修复:
- C示例编译问题
- 查找ONI文件的帧时出现错误的帧信息
- 第一帧校验和错误有时
- 重放支持与来自fw 164的环境补偿相关的灰色帧
- 重放支持在HDR和普通模式之间切换。
- dmcam_dev_get_uri返回带有eth设备令牌的uri
- 提高dmcam_frame_get_pcl_xyzd和dmcam_frame_get_pcl_xyzi 的性能
- 添加dmcam_frame_get_pcl_xyziapi以获取具有灰色纹理的点云
- 添加dmcam_cap_seek_frameapi以在设备重播文件时查找帧
- 添加dmcam_frame_get_dist_raw以便用户无需校准即可获得原始距离
- 对于索尼传感器:
- 增加对索尼传感器的压缩支持
- 过滤链优化
- 校准方法改进。
- 打开后镜头参数文件未关闭
- 录制的重播文件没有时间戳
- 设备有时无法正常关闭(fw ver=164/165)
- 支持保存重播和播放重播。