在VisionPro中,使用工业相机采像的方式主要有两种:
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);
}
}
以上,如有错误,欢迎指正批评,谢谢。。。