VisionPro 多图像拼接简单操作


应用场景:
  比如在一个视觉项目应用中,由于FOV过大,单相机像素精度不能满足预期,那么就需要分开布局多个相机拍摄。但是如果涉及到测量,定位,计数等类似应用的时候,图像拼接技术则显的非常重要。
  这里模拟四台相机分别拍摄一组二维码图像,然后将四张图拼接成为一张图,最后实现读码的功能。
实现功能:

1. 准备4张图像

2. 在VisionPro中新建一个ToolBlock,然后添加4个CogImageFileTool工具

3. 然后依次加载上面准备好的4张图像

注意:这里用CogImageFileTool工具模拟真实环境中4台相机,真实环境中
只需要将CogImageFileTool替换成CogAcqFifoTool,然后为每个CogAcqFifoTool工具分配一台相机即可。

4. 添加CogIDTool工具,用于读取拼接后图像的二维码

这里的InputImage可以暂时不用引用,后面直接在脚本中赋值即可。

5. 重点部分:为ToolBlock编写脚本

5.1 添加程序集Dll

5.2 引用命名空间:

5.3 代码部分:

1 public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase 2 26 } 27 } 28 29 CogImage8Grey img = new CogImage8Grey(); 30 img.Allocate(imgList[0].Width * 2, imgList[0].Height * 2); 31 32 //指定画框 33 imageStitcher.DestinationImage = img; 34 35 imageStitcher.Region = null; 36 imageStitcher.RunParams.ImageAlignmentEnabled = true; 37 38 for (int i = 0; i < 4; i++) 39 47 else if(i == 1) 48 52 else if(i == 2) 53 57 else 58 62 //将当前遍历到的图像贴进画框中 imageStitcher.InputImage = CogImageConvert.GetIntensityImage(imgList[i], 0, 0, imgList[i].Width, imgList[i].Height); 64 imageStitcher.Run(); 65 } 66 mToolBlock.Outputs[0].Value = imageStitcher.OutputImage; 67 68 // Read ID Tool 69 idTool= mToolBlock.Tools["CogIDTool1"] as CogIDTool; 70 idTool.InputImage = (CogImage8Grey) mToolBlock.Outputs[0].Value; 71 idTool.Run(); 72 73 return false; 74 } 75 }

原理: 可以将CogCopyRegionTool对象想象成一个尚未完成的画框,因为要装4张图,所以首先需要确定画框尺寸 (一张图*2的大小)。
然后准备装照片进去了,拿到一张照片后,首先确定照片应该放置的位置 (第一张00,第二张10,第三张01,第四张11这样)。

确认完一张图像位置之后,则将当前的图片装入指定的位置,以此往复。

6. 最终,我们会得到一张全新的无缝拼接图片(为了便于展示直接通过代码的形式将其传入CogODTool工具的输入)



上一篇:Cognex InSight 实现ModBusTCP通讯详解

下一篇:VisionPro 颜色工具


VisionPro
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图