让代码更简单

当前位置:代码狗 > 开发教程 > 工业视觉教程 > 正文

VisionPro通过已发送项获取运行结果

重要:本文最后更新于2019-03-16 11:43:24,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

经过前面的教程我们已经可以正常获取我们项目中的visionPro运行结果,之所以没告诉大家这种简单方法,是为了让大家了解每个工具对象的属性和它的结构,因为在以后的实践中大家就会发现很多操作都需要知道工具的结构,灵活运用工具的各种属性可以帮助我们完成更加复杂的视觉项目。

我们先构建一个vpp项目,这里就不重复说明了,前面教程很清楚,不会的照着前面的教程自己做一个。

然后选择你需要通过已发送项获取的数据,比如我需要斑点工具找到了多少个斑点,那么我就右键斑点工具下面的斑点数量值,选择添加到已发送项。

VisionPro通过已发送项获取运行结果

VisionPro通过已发送项获取运行结果

然后我们可以在已发送项列表里看到刚刚添加的这个值路径,name可以自己编辑,如下图

VisionPro通过已发送项获取运行结果

VisionPro通过已发送项获取运行结果

VisionPro通过已发送项获取运行结果

VisionPro通过已发送项获取运行结果

然后我们在C#代码中这样获取结果

首先老规矩声明全局变量加载vpp文件:

要查看更多文章内容,请您先登录/注册

最终结果如下图,效果和我们以前的一样,只是这种方法更适合job多,并且都要执行的场景。

VisionPro通过已发送项获取运行结果

VisionPro通过已发送项获取运行结果

 

感觉很棒!可以赞赏支持我哟~

赞(13) 打赏

评论 25

  1. #11

    按照教程写下来,直接点获取结果没用,得按顺序从加载,运行,获取结果才能显示图片,我把代码全放在获取结果里面就有异常了,搞不懂。。

    xiaoZ1个月前 (09-15)回复
    • 因为这个教程只是告诉大家已发送项该怎么取,完全是按执行顺序来的,但是vp工具在运行时是以异步线程的方式执行,当代码执行到取结果的时候其实VP程序还没执行完成,所以第一次是空的,后面运行取的结果是上一次的。正确的方法是通过事件来取,这样才能保证一定会取到数据。个人理解仅供参考。

      代码狗1个月前 (09-16)回复
  2. #10

    请问vpp文件有PostedItem1为什么获取不到里面的值呢?要配置其余的东西吗?

    旅途5个月前 (05-14)回复
    • 不需要配置其它东西,照我教程做就没问题。

      代码狗5个月前 (05-14)回复
      • CogJobManager mymanger = new CogJobManager();
        mymanger = (CogJobManager)CogSerializer.LoadObjectFromFile(path);
        mymanger.Run();
        Cognex.VisionPro.ICogRecord temprecord; //声明发送项结果对象
        Cognex.VisionPro.ICogRecord toprecord = mymanger.UserResult();//取得结果对象并赋值
        if (toprecord == null) return;//如果等于空,则没有取到数据
        MessageBox.Show(“进来了”, “结果反馈”, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
        提示框没有进入,说明没有值,请问我哪里出错了

        旅途5个月前 (05-14)
      • 你把工具运行和取值分开写,用两个按钮,你就会知道原因了。

        代码狗5个月前 (05-14)
  3. #9

    搞了一晚上了。。。。

    旅途5个月前 (05-11)回复
  4. #8

    大佬,为什么vs2012 中的visionpro控件就没了(关闭后又打开vs2012)

    旅途5个月前 (05-11)回复
  5. #7

    版主,您好,我是刚接触VisionPro,有点疑问想请教您一下!
    如果想要用C#实现自动取值(实时获取验证图片后的结果),并确认是最新验证的结果,有没有什么好的方法?

    Charles1年前 (2019-07-23)回复
    • 判断job是否运行成功

      代码狗1年前 (2019-07-23)回复
      • 您好,问题已经解决,非常感谢!
        现在又有一个问题,我之前训练图片都是单色位图格式的,现在想加载本地的彩色图片,显示24位图格式不对
        有没有哪个工具可以转换使用?代码中已经了解怎么转换,但是VisionPro工具中怎么实现?

        Charles1年前 (2019-08-02)
      • CogImageConvertTool转换

        代码狗1年前 (2019-08-02)
      • 谢谢老板,图片转换已经解决,感觉要处理复杂的图像需要对各个组件有比较深刻的理解!
        想请教一下一个新问题,准备了一张有折痕的黑色纸张,拍摄下来,想要训练找这种不明显折痕的vpp文件,前面您介绍的一些工具都试了下,如果痕迹变动(换一张)有些组件会找不出折痕,还有一些组件会误判,请问这种情况有没有好的方法来处理?

        Charles1年前 (2019-08-08)
      • 需要设置模板匹配工具的旋转角度及缩放,还有将找到的特征区域传递下去

        代码狗1年前 (2019-08-08)
  6. #6

    意思是那个工具可以把数据合并吗?可以把两个JOB里的结果合并到一块吗? 🙏🏻

    郑帅超1年前 (2019-06-04)回复
    • 只能合并一个job内的。为什么要合并两个job,你自己取出来不就好了。

      代码狗1年前 (2019-06-04)回复
  7. #5

    有个问题, 我现在的VPP方案是两个JOB, 每个JOB下各有两个已发送项, 按上文中的代码执行后, 每次只能读取其中一个JOB的一个发送项的值。 怎么把两个JOB的 四个发送项的值合并到一起???

    郑帅超1年前 (2019-06-04)回复
    • 取四次不就行了,非要一起可以在visionPro中使用CogResultsAnalysisTool工具,它可以对一些数据做简单运算,将数据给它,把它通过已发送项取出来即可。

      代码狗1年前 (2019-06-04)回复
  8. #4

    版主,你好VPP文件在哪?

    Rudy2年前 (2019-03-14)回复
    • …文件丢失了,自己做一个吧,前面有教程。

      代码狗2年前 (2019-03-14)回复
  9. #3

    狗哥,可以解释下ICogRecord首字母为I的接口?它的含义和用法

    TT2年前 (2019-01-15)回复
    • 以后再讲

      daimadog2年前 (2019-01-16)回复
  10. #2

    版主,请问下,为什么每次运行时Cognex.VisionPro.ICogRecord toprecord = myjobmanger.UserResult();//取得结果对象并赋值 这里时,toprecord都为null。还请您帮忙解答下。我现在需要运行一个编辑脚本的JOB,想从job当中获得image scoure; (因为是线扫相机需要很大的视野,因此这个job脚本里面有触发多次拍照拼接成一张图,而不用加载acqfifotool触发) 请您百忙之中解答下,有偿解答,万分感谢。

    2年前 (2019-01-10)回复
    • myjobmanger.UserResult();不是Cognex.VisionPro.ICogRecord类型。脚本中的PostAcquisitionRefInfo就是采集到图像将会调用的方法,通过CogCopyRegionTool工具复制多张图像区域进行拼接然后传入即可。

      daimadog2年前 (2019-01-10)回复
  11. #1

    版主这些代码的 声明引用 搞不懂怎么用

    2年前 (2018-11-24)回复
×

请作者吃根烤肠!

支付宝