C#联合HALCON调用相机

halcon版本 18.05(可以在win10 通过OpenFramegrabber)
VS:2015
相机:大恒
电脑系统:win10
界面如下:

C#联合HALCON调用相机_第1张图片

这里采用定时器的方法 实现实时采集
public Form1()
{
InitializeComponent();
}
HTuple hv_AcqHandle = new HTuple(), //相机句柄
hv_WindowHandle = new HTuple();//窗口句柄
HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
///关闭相机
private void button3_Click(object sender, EventArgs e)
{
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
if (HDevWindowStack.IsOpen())
{
HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
}
hv_Width.Dispose();hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
if (HDevWindowStack.IsOpen())
{
HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
}
}

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
        HOperatorSet.CloseFramegrabber(hv_AcqHandle);
        timer1.Enabled = false;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
     //  cam.cls_AcqInit(out hv_AcqHandle,out hv_WindowHandle);
 }

    private void button1_Click_1(object sender, EventArgs e)
    {
        HOperatorSet.GenEmptyObj(out ho_Image);
    // //   创建空对象
      //  Image Acquisition 01: Code generated by Image Acquisition 01
      //  清空句柄
            hv_AcqHandle.Dispose();
        //  打开相机(参数:接口名称,cam2 相机名称,输出相机句柄)
        HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive",
    -1, "default", -1, "false", "default", "Cam2", 0, -1, out hv_AcqHandle);
        // 从指定图像捕获设备 开始异步采集
        HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
       // 判断某一窗口是否打开,文章开头有使用,如果打开了,则关闭
        if (HDevWindowStack.IsOpen())
        {
        //    销毁窗口,在后文中将重新打开窗口
               HOperatorSet.CloseWindow(HDevWindowStack.Pop());
        }
       // 设置窗口特征
           HOperatorSet.SetWindowAttr("background_color", "black");
      //  打开一个窗口,创建 该窗口的句柄
           HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);
      //  将此句柄下发给halcon,halcon将此句柄保存起来,以后便可对此句柄所指的窗口进行任何操作,包括销毁这个窗口!
           HDevWindowStack.Push(hv_WindowHandle);
    }

    private void button2_Click(object sender, EventArgs e)
    {

        if (button2.Text == "开始采集")
        {
            timer1.Enabled = true;
            button2.Text = "停止采集";
        }
        else
        {
            button2.Text = "开始采集";
            timer1.Enabled = false;
        }
    } 
}

}
时间有限,做的比粗糙,大伙凑合着看看就行

你可能感兴趣的:(C#联合HALCON调用相机)