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文件的帧时出现错误的帧信息
    • 第一帧校验和错误有时
  • 修正:当曝光过度时,将灰度/红外值设置为零。
  • 新建:添加dmcam过滤器以支持pix装箱
  • 增强:更好地支持ROI。
  • 增强:优化TC-E2的精度和校准数据的误差校正。
  • 新建:添加参数idparam_info_lens以便用户通过dmcam_param_batch_get获取镜头参数
  • 增强:
    • 重放支持与来自fw 164的环境补偿相关的灰色帧
    • 重放支持在HDR和普通模式之间切换。
    • dmcam_dev_get_uri返回带有eth设备令牌的uri
    • 提高dmcam_frame_get_pcl_xyzddmcam_frame_get_pcl_xyzi
    • 的性能
  • 新的
    • 添加dmcam_frame_get_pcl_xyziapi以获取具有灰色纹理的点云
    • 添加dmcam_cap_seek_frameapi以在设备重播文件时查找帧
    • 添加dmcam_frame_get_dist_raw以便用户无需校准即可获得原始距离
    • 对于索尼传感器:
      • 增加对索尼传感器的压缩支持
      • 过滤链优化
      • 校准方法改进。
  • 修复
    • 打开后镜头参数文件未关闭
    • 录制的重播文件没有时间戳
    • 设备有时无法正常关闭(fw ver=164/165)
  • 修复:在Windows下,重播文件大小>;2GB可能无法正常工作的问题
  • 增强:播放损坏的重播文件时的某种容错性。
  • 增强:在dmcam_cap_cfg_t中添加en_fdev_rewind以允许在将dmcam重放文件用作设备时重放。
  • 增强:在文件重播模式下,如果fps设置为0,则仅在调用dmcam_get_frames/dmcam_get_frames之后才进行帧捕获。这对于在应用程序级别暂停和恢复重播非常有用
  • 修复:从QVGA切换到VGA时的重放问题
  • 修复:无法在openni的niviewer中播放重播文件
  • 增强:优化环境光补偿
  • 增强:进一步优化Dist&Gray Calc性能(提高约50%)。TC-E3最高可达115fps@皮质-A7 1GHz
  • 修复:TC-E3重播问题
  • 修复:当主机进程缓慢时,dmcam_cap_get_frames的返回值错误。
  • 新的:支持索尼传感器
  • 新建:支持环境光补偿
  • 增强:优化Dist&Gray Calc性能(提高约40%)
  • 修复dmcam_frame_get_pcl_xyz ddmcam_frame_get_pcl_x y z现在返回点数(x,y,z)/(x,y,z,d)等于深度图像的像素数。云中的无效点分别表示为(0,0,0)和(0,0,0,0)。
  • 1.61.1:修复导致内存耗尽的可能问题。
  • 1.61.0:修复:unicode问题,所有python api都应该使用'bytes'而不是'str'来调用'char*'类型的c api
  • 1.60.0:主要版本
    • 支持保存重播和播放重播。
  • 欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java ajax请求不允许POST请求   java引用Android应用程序中其他模块的通用模块   JavaSpringBootWebFluxFlatmap是链接http调用的正确方法吗?   java如何在底部工作表中设置折叠工具栏?   任务“:compileJava”的java执行失败。“>无效的源版本:1.7   java Rabbit MQ不刷新ACK?   JavaWebSphere7:METAINF/config/ibmaxis2。无法正确加载xml Axis2全局配置文件   在Java中找出字符串是否包含数组中的值   java Liquibase通过Springboot执行postgres方法   java在Eclipse中安装Maven而不使用插件   Swing应用程序中的java SMTP错误   web应用程序InvalidKeyException:Java中使用RSA密钥的密钥格式无效   java显示JFrame作为JButton单击的结果?   java如何保留Apache Camel Exchange的属性,如果消息是从RabbitMQ生成和使用的   java使用流提取哈希映射列表中的所有对象   Android应用程序中的java单词检查器