在 .NET 环境下通过VisionPro打开相机并获取图像的基本步骤如下:
1.创建CogFrameGrabberGigEs对象,获取连接到图像采集卡的所有相机设备。
2.通过CogFrameGrabberGigEs获取单个对象ICogFrameGrabber的引用,支持的图像格式、相机序列号等信息可以从该接口对象中获取。
3.通过CogFrameGrabber的CreateAcqFifo方法创建ICogAcqFifo接口对象,在使用CreateAcqFifo方法时须指定图像格式、相机端口等信息。
4.通过ICogAcqFifo接口的Acquire等方法可以获取所需图像数据。
5.程序退出前断开CogFrameGrabber与硬件的连接,否则可能导致退出异常。
注意事项:
①相机的IP与网卡在同一网段,关闭防火墙,打开网卡巨帧等物理硬件参数设置正确。
②编译平台选择x64,否则即使相机物理连接没有问题,也可能出现创建CogFrameGrabbers的Count属性为零的情况
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Cognex.VisionPro;
namespace ImageAcquire
{
public class Form1 : System.Windows.Forms.Form
{
private Cognex.VisionPro.Display.CogDisplay cogDisplay1;//用于进行图像显示的VisionPro控件
ICogAcqFifo myFifo = null;
ICogFrameGrabber myFrameGrabber = null;
public Form1()
{
InitializeComponent();
InitializeAcquisition();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
//5-断开CogFrameGrabber对象与硬件的连接。
if(myFrameGrabber!=null)
myFrameGrabber.Disconnect(false);
}
base.Dispose( disposing );
}
private void InitializeAcquisition()
{
const string VIDEO_FORMAT = "Sony XC75 640x480";
// 1-创建CogFrameGrabbers对象
CogFrameGrabbers myFrameGrabbers = new CogFrameGrabbers();
//2-获取单个ICogFrameGrabber接口对象
myFrameGrabber = myFrameGrabbers[0];
//3-创建ICogAcqFifo接口对象
myFifo = myFrameGrabber.CreateAcqFifo(VIDEO_FORMAT,Cognex.VisionPro.CogAcqFifoPixelFormatConstants.Format8Grey, 0, false);
}
private void button1_Click(object sender, System.EventArgs e)
{
int trigNum;
//4-通过ICogAcqFifo接口对象的Acquire方法进行图像采集。
cogDisplay1.Image = myFifo.Acquire(out trigNum);
}
}
}