VisionPro中使用工业相机采集图像的两种方式分享

在VisionPro中,使用工业相机采像的方式主要有两种:

  1. 通过调用CogAcqFifoTool工具的方式取像
  2. 通过实现 ICogAcqFifo接口获取图像

1. 通过CogAcqFifoTool工具取图:
① 连接相机到PC
② 修改相机和PC至同一网段,修改相机或者本地网卡IP都可以
VisionPro中使用工业相机采集图像的两种方式分享_第1张图片
③ 打开VisionPro,从工具栏拖入CogAcqFifoTool工具
VisionPro中使用工业相机采集图像的两种方式分享_第2张图片
双击打开,然后绑定相机,设置相机参数
VisionPro中使用工业相机采集图像的两种方式分享_第3张图片
查看实时图像,如果图像出现异常,或者采像非常失败,一般需要设置GigE栏
VisionPro中使用工业相机采集图像的两种方式分享_第4张图片④ 设置完毕,保存当前CogAcqFifoTool工具,名称最好与被绑定的相机有关,为了方便辨识
VisionPro中使用工业相机采集图像的两种方式分享_第5张图片

VisionPro中使用工业相机采集图像的两种方式分享_第6张图片

⑤ 在VS中调用这个VPP文件

 ICogImage img = null;
 CogAcqFifoTool cameraTest = new cameraTest(); //创建采像工具对象
 cameraTest = CogSerializer.LoadObjectFromFile(@"C:\Users\1\Desktop\1\Camera_Test.vpp")as CogAcqFifoTool; //加载采像vpp文件
 cameraTest.Run(); //运行相机
 cameraTest.Ran += new EventHandler((sender,e) =>
 {
     
     img=cameraTest.OutputImage;//获取图片
 });

2. 通过实现 ICogAcqFifo接口获取图像:
VisionPro中使用工业相机采集图像的两种方式分享_第7张图片
这里通过C#窗体实现一个创建采像工具,然后采集一张图片,完场上图中的效果(注意:如果代码无误的情况下出现相机刷不出来的情况,请检查项目的NetFrameWork版本)

 public partial class Form1 : Form
 {
     
    public Form1()
    {
     
      InitializeComponent();
      frameGrabbers = new CogFrameGrabbers();
      if (frameGrabbers.Count > 0)
      {
     
          foreach (ICogFrameGrabber item in frameGrabbers)
          {
     
              cbb_CameraList.Items.Add(item.Name);
          }
          cbb_CameraList.SelectedIndexChanged += new EventHandler(OnFramerGrabberChanged);
       }
       else
       {
     
          cbb_CameraList.Items.Add("Not fount camera");
       }
    }
    private CogFrameGrabbers frameGrabbers = null; //声明图像采集器集合对象
    private ICogAcqFifo iCogAcqFifo = null; //声明图像采集器对象
    
    /// 开始采集
    private void btn_StartAcq_Click(object sender, EventArgs e)
    {
     
       int trgNum = 0;
       cogDisplay1.Image = iCogAcqFifo.Acquire(out trgNum);
       cogDisplay1.Fit(true);
    }
    
    /// 创建采像工具
    private void btn_CreateAcqFifo_Click(object sender, EventArgs e)
    {
     
       string format = cbb_VideoFormat.SelectedItem.ToString();
       iCogAcqFifo = frameGrabbers[cbb_CameraList.SelectedIndex].CreateAcqFifo(format, CogAcqFifoPixelFormatConstants.Format8Grey, 0, true); 
       iCogAcqFifo.OwnedGigEVisionTransportParams.PacketSize = 8000;
       iCogAcqFifo.OwnedGigEVisionTransportParams.LatencyLevel = (int)nud_DelayLevel.Value;
       iCogAcqFifo.OwnedExposureParams.Exposure = (int)nud_Exposure.Value;
    }
    
    /// 当选择相机的时候触发此事件
    private void OnFramerGrabberChanged(object sender, EventArgs e)
    {
     
       cbb_VideoFormat.Items.Clear();
       for (int i = 0; i < frameGrabbers[cbb_CameraList.SelectedIndex].AvailableVideoFormats.Count; i++)
       {
     
          cbb_VideoFormat.Items.Add(frameGrabbers[cbb_CameraList.SelectedIndex].AvailableVideoFormats[i]);
       }
    }
    
    /// 关闭窗体的时候断开相机
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
     
       frameGrabbers[cbb_CameraList.SelectedIndex].Disconnect(false);
    }
 }

以上,如有错误,欢迎指正批评,谢谢。。。

你可能感兴趣的:(Vision_Pro)