基本信息
源码名称:C#联合halcon海康威视相机(缩放,平移)实现模板匹配
源码大小:22.98M
文件格式:.rar
开发语言:C#
更新时间:2024-04-20
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 8 元 
   源码介绍

   开发环境:vs2022

                   halcon 23.0.5

                  海康提供的类;MVCamera.cs

                 实例化海康提供的类,获取图像,然后在halcon 中实现模板匹配。

                自己做一个test.shm模板存储在debug文档中,就可以实现模板匹配。

1.定义相机对象,可以实现图像缩放平移,有些smartwindow 不稳定,可以换成Hwindcontrol控件显示

 public Form1()
 {
     InitializeComponent();
     hwindow = hSmartWindowControl1.HalconWindow;//初始化窗口变量s
     w_width = hSmartWindowControl1.Size.Width;
     w_height = hSmartWindowControl1.Size.Height;
     this.MouseWheel = new System.Windows.Forms.MouseEventHandler(this.my_MouseWheel);

     m_pDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
     m_pMyCamera = new MyCamera();

     DeviceListAcq();
 }

2.设置相机,打开线程,开始自动取图

private void btnCtinu_Click(object sender, EventArgs e)
{



    int nRet = m_pMyCamera.MV_CC_SetEnumValue_NET("TriggerMode", 0);
    if (nRet != MyCamera.MV_OK)
    {
        MessageBox.Show("Set TriggerMode Fail");
        return;
    }
    // ch:开启抓图 | en:start grab
     nRet = m_pMyCamera.MV_CC_StartGrabbing_NET();
    if (MyCamera.MV_OK != nRet)
    {
        MessageBox.Show("Start Grabbing Fail");
        return;
    }
    m_bGrabbing = true;

    Thread hReceiveImageThreadHandle = new Thread(ReceiveImageWorkThread);
    hReceiveImageThreadHandle.Start(m_pMyCamera);
}

2.转Halcon 格式图,实现模板匹配

 HOperatorSet.Rgb1ToGray(i_mage, out ho_Image);
 
 try
 {

      HOperatorSet.DispObj(i_mage, ho_WHD);// ch 显示 || en: display
     // ho_WHD.DispObj(ho_Image);
     i_mage.Dispose();
     fn = fn "/" template ".shm";
     fn = fn.Replace("\\", "/");//water gauge position
   

     HOperatorSet.ReadShapeModel(fn, out hv_ModelID);
     HOperatorSet.FindScaledShapeModel(ho_Image, hv_ModelID, 0, 6.29, 0.8, 1.0,
           0.5, 1, 0.5, "least_squares", 5, 0.8, out hv_Row, out hv_Column, out hv_Angle,
           out hv_Scale, out hv_Score);