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

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

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

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

在这里插入图片描述

⑤ 在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接口获取图像:
在这里插入图片描述
这里通过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);
    }
 }

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

  • 12
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值