在VisionPro中,使用工业相机采像的方式主要有两种:
- 通过调用CogAcqFifoTool工具的方式取像
- 通过实现 ICogAcqFifo接口获取图像
1. 通过CogAcqFifoTool工具取图:
① 连接相机到PC
② 修改相机和PC至同一网段,修改相机或者本地网卡IP都可以
③ 打开VisionPro,从工具栏拖入CogAcqFifoTool工具
双击打开,然后绑定相机,设置相机参数
查看实时图像,如果图像出现异常,或者采像非常失败,一般需要设置GigE栏
④ 设置完毕,保存当前CogAcqFifoTool工具,名称最好与被绑定的相机有关,为了方便辨识
⑤ 在VS中调用这个VPP文件
1 ICogImage img = null;
2 CogAcqFifoTool cameraTest = new cameraTest(); //创建采像工具对象
3 cameraTest = CogSerializer.LoadObjectFromFile(@"C:\Users\1\Desktop\1\Camera_Test.vpp")as CogAcqFifoTool; //加载采像vpp文件
4 cameraTest.Run(); //运行相机
5 cameraTest.Ran += new EventHandler((sender,e) =>
6 {
7 img=cameraTest.OutputImage;//获取图片
8 });
2. 通过实现 ICogAcqFifo接口获取图像:
这里通过C#窗体实现一个创建采像工具,然后采集一张图片,完场上图中的效果(注意:如果代码无误的情况下出现相机刷不出来的情况,请检查项目的NetFrameWork版本)
1 public partial class Form1 : Form
2 {
3 public Form1()
4 {
5 InitializeComponent();
6 frameGrabbers = new CogFrameGrabbers();
7 if (frameGrabbers.Count > 0)
8 {
9 foreach (ICogFrameGrabber item in frameGrabbers)
10 {
11 cbb_CameraList.Items.Add(item.Name);
12 }
13 cbb_CameraList.SelectedIndexChanged += new EventHandler(OnFramerGrabberChanged);
14 }
15 else
16 {
17 cbb_CameraList.Items.Add("Not fount camera");
18 }
19 }
20 private CogFrameGrabbers frameGrabbers = null; //声明图像采集器集合对象
21 private ICogAcqFifo iCogAcqFifo = null; //声明图像采集器对象
22
23 /// 开始采集
24 private void btn_StartAcq_Click(object sender, EventArgs e)
25 {
26 int trgNum = 0;
27 cogDisplay1.Image = iCogAcqFifo.Acquire(out trgNum);
28 cogDisplay1.Fit(true);
29 }
30
31 /// 创建采像工具
32 private void btn_CreateAcqFifo_Click(object sender, EventArgs e)
33 {
34 string format = cbb_VideoFormat.SelectedItem.ToString();
35 iCogAcqFifo = frameGrabbers[cbb_CameraList.SelectedIndex].CreateAcqFifo(format, CogAcqFifoPixelFormatConstants.Format8Grey, 0, true);
36 iCogAcqFifo.OwnedGigEVisionTransportParams.PacketSize = 8000;
37 iCogAcqFifo.OwnedGigEVisionTransportParams.LatencyLevel = (int)nud_DelayLevel.Value;
38 iCogAcqFifo.OwnedExposureParams.Exposure = (int)nud_Exposure.Value;
39 }
40
41 /// 当选择相机的时候触发此事件
42 private void OnFramerGrabberChanged(object sender, EventArgs e)
43 {
44 cbb_VideoFormat.Items.Clear();
45 for (int i = 0; i < frameGrabbers[cbb_CameraList.SelectedIndex].AvailableVideoFormats.Count; i++)
46 {
47 cbb_VideoFormat.Items.Add(frameGrabbers[cbb_CameraList.SelectedIndex].AvailableVideoFormats[i]);
48 }
49 }
50
51 /// 关闭窗体的时候断开相机
52 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
53 {
54 frameGrabbers[cbb_CameraList.SelectedIndex].Disconnect(false);
55 }
56 }