当前位置:   article > 正文

Visionpro工具二次开发 02_visionpro二次开发手册

visionpro二次开发手册

在本部分开始前建议先了解一下:CogImageFileTool读图-CSDN博客机器视觉技术与应用实战(Visionpro工具二次开发 01)_visionpro wpf-CSDN博客

因为本次将利用到这些东西。

首先:实现功能:CogImageFileTool读图到CogRecordDisplay,并且显示出来。

你需要在工具箱导入CogRecordDisplay,并且拖到界面里面。同时还要导入一个按钮(button)。

布局大概这样:

为了后面阅读方便,可以修改一下按钮属性(右键布局上的按钮点击“属性”就可以修改):

1、按钮的名字:

2、按钮在你的代码里面的类名:

开始编写代码:

 双击按钮其实就可以跳转到代码界面,当然你可以去找.cs后缀的文件打开。

要在解决方案里面引入Cognex.VisionPro.ImageFile。在“扩展”里面找Cognex.VisionPro.ImageFile

 废话不多说(c#代码):

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using Cognex.VisionPro;
  12. using Cognex.VisionPro.ImageFile;//这个需要引用
  13. namespace WindowsFormsApp1
  14. {
  15. public partial class Form1 : Form
  16. {
  17. private CogImageFileTool picture;//定义一个CogImageFileTool变量
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. picture = new CogImageFileTool();//实例化
  22. }
  23. private void Form1_Load(object sender, EventArgs e)
  24. {
  25. }
  26. //按钮点击后功能实现
  27. private void DisplayImageButton_Click(object sender, EventArgs e)
  28. {
  29. picture.Operator.Open("C:\\Users\\12581\\Desktop\\1.jpg", CogImageFileModeConstants.Read);//读图
  30. picture.Run();
  31. cogRecordDisplay1.Image = picture.OutputImage;//显示出来
  32. cogRecordDisplay1.Fit(true);
  33. }
  34. }
  35. }

效果如下:

功能比较简单,可以在这个基础上把连续读图的功能实现。

如果我想调用调用实时视频呢?

这里需要用到线程,一帧一帧获取图像。

线程,它来了!

由于要调用不同类型相机的配置文件,这里就跳过了。

核心代码(不同相机配置不同,读帧大体一致):

 private Thread ThreadObject;                //声明线程变量
ThreadObject = new Thread(new ThreadStart(ThreadFunction));// //线程对象实例化
  1. //线程启动
  2. if (ThreadObject.ThreadState == System.Threading.ThreadState.Unstarted)
  3. {
  4. ThreadObject.Start();
  5. }
  1. //线程回调函数
  2. public void ThreadFunction()
  3. {
  4. int ImageWidth = 1280;
  5. int ImageHeight = 1024;
  6. CogImage8Grey Image = new CogImage8Grey();
  7. var cogRoot = new CogImage8Root();
  8. IntPtr ImageBufferPtr = Marshal.AllocHGlobal(ImageWidth * ImageHeight);
  9. byte[] ImageBuffer = new byte[ImageWidth * ImageHeight];
  10. while (!ThreadStop)
  11. {
  12. //采集单张图像
  13. SnapAcquisitionSoftTrigger(ref ImageBuffer);
  14. //将图像数据从托管区拷贝到非托管区
  15. Marshal.Copy(ImageBuffer, 0, ImageBufferPtr, ImageWidth * ImageHeight);
  16. //初始化
  17. cogRoot.Initialize(ImageWidth, ImageHeight, ImageBufferPtr, ImageWidth, null);
  18. //指定Image图像数据为cogRoot
  19. Image.SetRoot(cogRoot);
  20. //将图像数据传给cogRecordDisplay1控件
  21. cogRecordDisplay1.Image = Image as CogImage8Grey;
  22. //显示图像
  23. cogRecordDisplay1.Fit(true);
  24. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/637137
推荐阅读
相关标签
  

闽ICP备14008679号