VS2013与halcon12联合

目前,我们看到的关于vs C#与halcon联合的介绍,大多数都是介绍vs2010的,当使用高版本的vs时,设置以及代码处理上会有一些区别。当下这篇文章各种参数如下:

操作系统:Win10 64位

VS版本:VS2013

halcon版本:halcon12.0    halcon的安装路径:D:\Program Files\MVTec

 

该博客的内容录制了视频,视频文件以及例程代码路径为:https://pan.baidu.com/s/1HMMNFGvPZ59uLNsfbwjQbg

需要看更多的halcon相关的文章,请关注公众号:

 

1. 创建C#工程

2. 工程设置参数修改

选择工程之后,右键【属性】,打开如下窗口,将【目标框架】这一项修改为.NET FrameWork3.5,。理由如下:

在halcon的安装路径:D:\Program Files\MVTec\HALCON-12.0\bin下,我们可以看到有dotnet35文件夹,并且这个版本是halcon12.0中最高的一个版本,因此对应的,我们需要在此选项中对应的选择3.5的版本。

还是在【属性】打开的窗口中,需要将【目标平台】选择为X86。理由如下:

halcon12.0提供的DLL是32位的,因此我们需要选择x86平台。

 

如下图所示,在【1】处填入halcon的dll所在的路径,也就是【3】所示的那个路径,然后点击【2】这个按钮,然后就可以在【3】所在的地方看到如下图所示的路径。

 

我们切换到工程的窗口设计,然后选择【工具箱】,选择【所有Windows窗体】中的任何一项,然后右键,选择【选择项...】

然后,可以打开如下窗口,我们在窗口中查看,是否有名称为HwindowControl的项,并且是否选中(前面是否画勾),如果没有,那么点击【浏览...】,依然到halcon的安装路径下选择路径:D:\Program Files\MVTec\HALCON-12.0\bin\dotnet35下的halcondotnet.dll,然后即可看到HWindowControl被选中了。

关于工具箱这个设置,是为了我们在窗口设计的时候,能够有halcon的控件可以使用,通过以上操作,我们可以在工具箱->所有Windows窗体中,一般是最后一个控件有HWindowControl控件。

 

3. halcon代码的导出:

halcon测试代码如下:

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'E:/halcon实战/muban_1.jpeg')
dev_display(Image)
get_image_size(Image, Width, Height)
rgb3_to_gray(Image, Image, Image, ImageGray)
dev_display(ImageGray)

在halcon窗口中,选择左上角的【文件】-》【导出】,打开如下窗口:

选择C#文件的保存位置后,按照上图所示,选择相应的选项后,点击【导出】,即可在所选择的保存文件夹下找到导出的C#文件。

导出的C#文件中,代码如下:

using System;
using HalconDotNet;

public partial class HDevelopExport
{
  public HTuple hv_ExpDefaultWinHandle;

  // Main procedure 
  private void action()
  {


    // Local iconic variables 

    HObject ho_Image, ho_ImageGray;

    // Local control variables 

    HTuple hv_Width = null, hv_Height = null;
    // Initialize local and output iconic variables 
    HOperatorSet.GenEmptyObj(out ho_Image);
    HOperatorSet.GenEmptyObj(out ho_ImageGray);
    //dev_open_window(...);
    ho_Image.Dispose();
    HOperatorSet.ReadImage(out ho_Image, "E:/halcon实战/muban_1.jpeg");
    HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);
    HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
    ho_ImageGray.Dispose();
    HOperatorSet.Rgb3ToGray(ho_Image, ho_Image, ho_Image, out ho_ImageGray);
    HOperatorSet.DispObj(ho_ImageGray, hv_ExpDefaultWinHandle);

    ho_Image.Dispose();
    ho_ImageGray.Dispose();

  }

  public void InitHalcon()
  {
    // Default settings used in HDevelop 
    HOperatorSet.SetSystem("width", 512);
    HOperatorSet.SetSystem("height", 512);
  }

  public void RunHalcon(HTuple Window)
  {
    hv_ExpDefaultWinHandle = Window;
    action();
  }

}

4. 将halcon导出的C#代码加入C#工程

我们可以看到,halcon导出的代码,类名为:HDevelopExport,在这个类中,有3个成员函数,一个成员变量。接下来,我们就需要将这些代码添加到C#工程中。

首先,我们需要在界面上添加两个控件,一个是halcon的控件,另外一个是button控件,如下图所示:

接下来,我们先将halcon导出代码HDevelopExport类的代码添加到如下位置:

接下来,我们在button的click函数中,添加代码,如下所示:

        private void button1_Click(object sender, EventArgs e)
        {
            HDevelopExport HD = new HDevelopExport();
            HD.RunHalcon(hWindowControl1.HalconWindow);
        }

接下来,我们还需要添加halcon类的引入,如下所示:

 

5.编译、调整、运行

直接编译,我们会发现有如下错误提示:

出现此错误提示,我们需要注释掉两个地方的代码:
第一个是,如下图所示:

第二个是,如下图所示:

 

编译成功后,在我们运行程序之前,需要做一个事情:将D:\Program Files\MVTec\HALCON-12.0\bin\dotnet35下的所有dll文件拷贝到工程目录testHalcon\testHalcon\bin\Debug下。

然后运行程序,点击如下图所示的【图像】按钮,即可看到显示的图像:

至此,我们halcon导出的C#代码就可以正确执行了。

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值