349体积相机获取测量时间点和位置信息

简介:一种使用349体积相机获取体积测量开始时间点和结束测量时间点以及包裹四个顶角位置信息的可行办法。

  • 本文档适用的问题
  1. 体积相机型号为:MV-DL2040-04B-H、MV-DL2025-04D-H、MV-DL2025-04H-H
  1. 项目中存在需要获取测量物体 体积测量的开始时间和结束时间点的需求
  1. 项目中存在需要获取测量物体的四个顶点的坐标的需求;
  • 部分定义
  1. 包裹测量起始帧号:检测到包裹头部的图像帧
  1. 包裹测量结束帧号:检测到包裹尾部的图像帧
  1. 包裹开始测量时间:对应包裹测量起始帧生成的时间
  1. 包裹结束测量时间:对应包裹测量结束帧生成的时间
  1. 包裹四个顶点坐标基于的坐标系:

点云坐标系,坐标系遵从右手准则,Y轴朝向传送带运动方向;

坐标原点:

采用标准箱标定时,坐标原点和光平面标定参数有关系,原点不固定。(获取坐标信息不推荐使用该种方式进行系统标定)

采用标定板标定时,坐标原点为系统标定时标定板棋盘格左上角(移动前)。

  • 本文档参考环境说明

操作系统:Windows7

网卡:Intel(R) Ethernet Connection (2) I219-LM

相机型号:MV-DL2040-04B-H

客户端:3DMVS2.0.1 build20200911

体积SDK:VolumeMeasureSDK_V2.2.0.1_20200908(基于3DMVS客户端)

注:确保网络环境已配置、相机已经标定。

网络环境配置请参考网口丢包指导文档;

相机标定请参考相关标定指导资料。

  • 操作步骤
  • 相机参数检查确认

使用3DMVS连接相机,确保相机已经标定且可以正常测量体积。

  • 点云图模式下,点云正常,未出现严重倾斜;
  • ROI和过滤区域已经绘制;
  • 相机在点云模式下,“实际帧速率(fps)”可以稳定达到“采集帧率控制”阈值,图像输出稳定不丢包;
  • 测量及校准模块下,测量类型使用“相机直出体积”和“积分体积”均可以正常出体积。

    • 不满足以上条件请根据情况进行排除异常情况,或联系相关技术人员提供技术保障。
  • 获取测量物体的四个顶点的坐标
    • 使用3DMVS软件安装路径下的体积Demo测试,默认路径为C:\Program Files (x86)\3DMVS\Development\MvVolMeasureSDK\Samples

Documentations:体积SDK开发手册文件夹,包含部分体积相机使用指导手册;

Runtime:体积运行时库文件夹,3DMVS安装时静默安装,已安装3DMVS的PC不需要再次安装,未安装3DMVS的PC需要根据说明进行安装;

Samples:Demo存放文件夹,包含C#和VC的主动与回调获取体积示例;

SDK:文件夹包含DotNet库,lib库与头文件;

注:更为详细的说明请查看开发手册,这里不再赘述

这里以C#回调方式获取体积Demo为例,打开项目,在回调函数ProcessCallBackResult里添加如下代码:

listBox1.Items.Add("有体积信息时的图像标记位:"+stResultInfo.nImgFlag);listBox1.Items.Add("位置信息XYZ:");for (int i = 0; i < stResultInfo.stVolumeInfo.vertex_pnts.Count(); i++){listBox1.Items.Add("位置信息[" + i + "]:(" + stResultInfo.stVolumeInfo.vertex_pnts[i].fX + ","+ stResultInfo.stVolumeInfo.vertex_pnts[i].fY + ","+ stResultInfo.stVolumeInfo.vertex_pnts[i].fZ + ")");}

注:代码仅供测试参考,请根据实际情况进行调整

  • 执行程序进行测试,由于该版本SDK采用运行库,所以不需要以往的拷贝dll,拷贝measure文件步骤;
  • 查找设备、连接相机,工作模式选择1、5、9均可

  • 点击开始工作,过包裹测试结果如下:

  • 获取测量物体 体积测量的开始时间和结束时间点
  • 由于接下来需要使用体积相机输出的图像信息,我们在创建句柄(CreateHandleBySerial)之后,继续添加代码:
            //设置开启图像输出使能nRet = m_csVolMeasure.SetVolAPIOutputImgEnable(true);if (ERROR_DEFINE.MV_VOLM_OK != (ERROR_DEFINE)nRet){string strErr = string.Format("SetVolAPIOutputImgEnable falied! nRet = {0} nRet = 0x{1:x}", nRet, nRet);MessageBox.Show(strErr);}
  • 继续在回调函数ProcessCallBackResult里添加如下代码:
            //检测图像标记位if (bProcess  && (1 == stResultInfo.nImgFlag)){//用户自定义,处理图像信息,图像位于结构体stResultInfo.stImagetextBox1.Text = ConvertLongDateTime(stResultInfo.stImage.nHostTimeStamp).ToString();textBox2.Text = stResultInfo.stImage.nFrameNum.ToString();//帧号最大值}//有体积并根据图像信息的时间戳计算开始测量时间和结束测量时间if (bProcess&&(1 == stResultInfo.nVolumeFlag) && (1 == stResultInfo.nImgFlag)){listBox1.Items.Add("输出体积时间:"+ConvertLongDateTime(stResultInfo.stImage.nHostTimeStamp).ToString());listBox1.Items.Add("输出体积帧号:" + stResultInfo.stImage.nFrameNum.ToString());listBox1.Items.Add("测量开始帧号:" + stResultInfo.stVolumeInfo.start_frm_id);listBox1.Items.Add("测量结束帧号:" + stResultInfo.stVolumeInfo.end_frm_id);}
  • 需要用到以下方法,将“主机生成时间”nHostTimeStamp的long类型转换为DateTime:
        public static DateTime ConvertLongDateTime(long d){//Long格式:标准时间从1970年到现在的毫秒数DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));long lTime = long.Parse(d + "0000");TimeSpan toNow = new TimeSpan(lTime);DateTime dtResult = dtStart.Add(toNow);return dtResult;}
  • 执行程序进行测试,查找相机、连接相机,工作模式推荐选择1、5;

特别说明:这里测量模式选择9相机直出体积时,会出现体积数据和图像数据不会一起输出的情况,也就是不满足

“(1 == stResultInfo.nVolumeFlag) && (1 == stResultInfo.nImgFlag)

的判断”

  • 如何计算测量开始时间和测量结束时间:

测量开始时间=体积信息输出的时间-(体积信息输出帧号-测量开始帧号)*1s300Fps(帧率阈值)

测量结束时间=体积信息输出的时间-(体积信息输出帧号-测量结束帧号)*1s300Fps(帧率阈值)

注:这里帧号差计算时,需要考虑帧号最大值为65535,跳转0

海康机器人线激光立体相机获取体积测量开始时间点和结束测量时间点以及包裹四个顶角位置信息的可行办法相关推荐

  1. 海康机器人工业相机常用参数功能设置与获取(持续更新全-C语言)

    海康机器人工业相机常用参数功能设置与获取(C语言) 前言 相机属性树 1.设备控制/DeviceControl 1.1相机序列号获取/DeviceSerialNumber 1.2相机自定义命名设置与获 ...

  2. 海康机器人工业相机sdk简介

    海康机器人工业相机SDK获取与简单介绍 SDK下载 SDK组成 1.头文件 2.静态库/lib库 3.动态库 4.开发文档 5.示例程序 SDK下载 在海康机器人的官网下载中心-> 海康机器人下 ...

  3. 深思数盾助力海康机器人,全新VM4.2乘风破浪,安全起航

    2022年3月28日,海康机器人机器视觉新技术及新品全球发布会盛大召开,圆满落幕.会上发布了全系列机器视觉新品,工业相机.智能相机.3D相机等重磅硬件产品,带来升级版的VM4.2软件,开启了机器视觉赋 ...

  4. Python 实现海康机器人工业相机 MV-CU060-10GM 的实时显示视频流及拍照功能

    一.背景介绍 1.最近项目中需要给客户对接海康机器人工业相机 MV-CU060-10GM: 2.客户要求通过部署的管理平台,可以在页面上实现如下功能: 1)相机视频流开始预览: 2)相机视频流停止预览 ...

  5. 海康机器人图像采集卡安装与使用

    海康机器人图像采集卡安装与使用 1.安装环境要求 1.1主板硬件配置需求 1.2软件安装 1.2.1 MVS软件安装 2.软件使用 2.1枚举相机,取流 3.软件SDK二次开发 3.1基于工业相机SD ...

  6. 海康威视工业相机海康机器人 Python开发采集数据、保存照片PyQt显示

    目前缺芯的大环境也影响到工业相机上面了,使用支持国产海康机器人的工业相机进行视觉开发是不错的替代方案.价格交期很是感人呐! 参考文章python调用海康工业相机并用opencv显示(整体实现) 博主写 ...

  7. 机器视觉硬件篇--线激光3d相机介绍及编程

    一.3D相机简介 常见的三维视觉技术,包含双目.ToF.激光三角.结构光等 毫米级:双目.ToF.结构光(散斑)的精度为 mm 级,多见于消费领域,如:导航避障,VR/AR,刷脸支付等 微米级:线激光 ...

  8. MS VS+HIK海康机器人工业相机环境配置

    MS VS+HIK海康机器人工业相机环境配置 一.配置之前的准备工作 二 .配置环境 1.系统环境变量配置 2.项目属性配置 三.环境验证 一.配置之前的准备工作 在具体配置之前,务必下载安装好所需文 ...

  9. 3D视觉之线激光3D相机

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨飞鸢逐浪@知乎 来源丨https://zhuanlan.zhihu.com/p/48651663 ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、添加箱图、位置参数调整)实战
  2. SecureCRT中文绿色免安装版修改字体颜色
  3. Java I/O中的对象序列化
  4. ICCV 2017 CREST:《CREST: Convolutional Residual Learning for Visual Tracking》论文笔记
  5. WebGL on iOS8 最终等到了这一天
  6. 【mathematical statistics】5 distributional testing
  7. 数据批量导入Oracle数据库
  8. mysql中有sa_SA工作-mysql设计规范
  9. GNU make manual 翻译( 一百一十一)
  10. Android 系统(11)---android 系统权限大全
  11. [Swift]LeetCode212. 单词搜索 II | Word Search II
  12. bat 命令行执行 java(jar)获取返回值 【ERRORLEVEL、System.exit(code)】
  13. Django一些常用操作记录
  14. 一道我根本猜不出来的Trajan
  15. TOEFL wordlist 17
  16. 【C++】优先级队列priority_queue模拟实现仿函数
  17. HTML:如何设置网页标题上的图标
  18. springboot 处理put请求参数
  19. ios 使用隐私条款
  20. java 获取路由器mac_求好人帮助,如何用java语言获取像无线路由器上的MAC地址,我会重赏...

热门文章

  1. 黑马程序员_困兽之斗
  2. 程序员都有黑客梦,聊聊渗透工程师主要学什么?
  3. android adb查看手机内存使用情况
  4. IP(Internet Protocol)网际协议
  5. Python全栈之路---day01(背景、语法初识)
  6. 查看锐捷poe交换机供电状态_锐捷POE交换机配置方法
  7. 计算机软件基础第四章答案,计算机应用基础第四章
  8. 源码深度解析系列之 Spring IOC
  9. Android App 优化之 Layout 怎么摆
  10. VS2015安装失败——系统找不到指定路径