映美精相机软触发

映美精 DFK 41BG02.H分辨率 1280X960最大帧率15

采用C#编程,使用软件触发模式。触发1次,到ImageAvalible事件发生,记录其时间为96毫秒附近波动。

手动计算时间如下:

像素个数:1280 * 960= 1,228,800

RGB格式,1个像素3个Byte来表示,其字节数: 1,228,800 * 3 = 3686400

相机处理后,读出时间1000 / 15 = 66.6666 毫秒

使用千兆网连接,其理论最大速度125MB/s,按理想状态传递

3686400 / 1000 /125 = 29.49 毫秒

总耗费时间合计: 66.67 + 29.49 = 96.16 毫秒

曝光时间可调节,节约几个毫秒。

若测形状尺寸,还是选择黑白相机,传输时间节约22毫秒。

由于第1次接触机器视觉,生怕像素选择小了,结果搞个100万像素的相机。

此相机发热,用手摸,感觉有点烫手。按道理,触发模式,相机不用总是处理数据,它在发热为哪般?

 

C#代码如下:

    using System;  
    using System.Collections.Generic;  
    using System.ComponentModel;  
    using System.Data;  
    using System.Drawing;  
    using System.Linq;  
    using System.Text;  
    using System.Windows.Forms;  
    using TIS.Imaging;  
    using System.Diagnostics;  
      
    namespace 相机  
    {  
        public partial class Form1 : Form  
        {  
      
            ICImagingControl ic;  
            VCDButtonProperty SoftTrigger;  
            VCDPropertyItem TriggerMode;  
      
            Stopwatch s;  
              
              
            public Form1()  
            {  
                InitializeComponent();  
      
                //debug  
                s = new Stopwatch();  
      
            }  
      
            private void Form1_Load(object sender, EventArgs e)  
            {  
                //ic 初始化  
      
                initCamera();  
      
           }  
      
            private void icImagingControl1_ImageAvailable(object sender, TIS.Imaging.ICImagingControl.ImageAvailableEventArgs e)  
            {  
                //图像Ready  
      
      
                //停止计时  
                s.Stop();  
                //显示流逝时间  
                updateLabel1Delegate label1Update = new updateLabel1Delegate(updateLabel1);  
                this.Invoke(label1Update);  
                  
                //复位计时  
                s.Reset();  
                //传递bitmap到PictureBox  
                pic.Image = ic.ImageActiveBuffer.Bitmap;  
      
      
            }  
      
            private void button1_Click(object sender, EventArgs e)  
            {  
      
                //捕捉按钮  
      
                //开始计时  
               s.Start();  
      
                //按软触发按钮  
                SoftTrigger.Push();  
                  
      
      
            }  
      
            private void button2_Click(object sender, EventArgs e)  
            {  
                //退出按钮  
      
                ic.LiveStop();  
                Close();  
            }  
      
            //代理更新流逝时间  
            private delegate void updateLabel1Delegate();  
            private  void updateLabel1()  
            {  
      
                label1.Text = "耗时:" + s.ElapsedMilliseconds.ToString() + "毫秒";  
      
      
            }  
      
            private void initCamera()  
            {  
                //初始化相机  
                try  
                {  
                    ic = new ICImagingControl();  
      
                    //Device dev = ic.Devices[0];  
                    //设备名  
                    ic.Device = "DFx 41BG02.H";  
      
                    //视频格式  
                    ic.VideoFormat = "BY8 (1280x960)";  
                    //帧速率  
                    ic.DeviceFrameRate = 15.0F;  
                    //多线程  
                    ic.ImageAvailableExecutionMode = EventExecutionMode.MultiThreaded;  
                    //连续捕捉  
                    ic.LiveCaptureContinuous = true;  
                    //live显示  
                    ic.LiveDisplay = false;  
                    //触发模式  
                    ic.DeviceTrigger = true;  
                    //缓冲区数量  
                    //ic.ImageActiveBuffer = 1;  
      
                    //事件  
                    ic.DeviceLost += new System.EventHandler<ICImagingControl.DeviceLostEventArgs>(deviceUnplug);  
                    ic.ImageAvailable += new System.EventHandler<ICImagingControl.ImageAvailableEventArgs>(icImagingControl1_ImageAvailable);  
                      
                    //软触发  
                    TriggerMode = ic.VCDPropertyItems.FindItem(VCDIDs.VCDID_TriggerMode);  
                    SoftTrigger = (VCDButtonProperty)TriggerMode.Elements.FindInterface("{FDB4003C-552C-4FAA-B87B-42E888D54147}" + ":" + VCDIDs.VCDInterface_Button);  
      
      
                    //启动流  
                    ic.LiveStart();  
                }  
                catch (Exception)  
                {  
      
      
                    MessageBox.Show("相机初始化失败。");  
                }  
      
            }  
      
      
            private void deviceUnplug(Object sender, TIS.Imaging.ICImagingControl.DeviceLostEventArgs e)  
            {  
                //相机拔出  
                MessageBox.Show("相机丢失。");  
      
      
            }  
      
      
            //end  
      
      
        }  
    }  


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值