预约试听:15323438773
  


技术分享

News

机器视觉检测halcon与C#混合编程之环境配置

日期: 2017-07-27
浏览次数: 586

 

机器视觉检测halcon与C#混合编程之环境配置

halcon源程序:

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)

read_image (Image, 'C:/Users/BadGuy/Desktop/猫.jpg')

dev_display(Image)

get_image_size(Image, Width, Height)

rgb3_to_gray(Image, Image, Image, ImageGray)

dev_display(ImageGray)

注意:写halcon程序时,如果过程中的图片需要显示出来,则需要在每个过程中都添加dev_display(**)

第一步:导出C#-halcon./net 程序;(halcon11.0)

 

 

第二步:

新建C#窗体程序

 

第三步:

添加halcondotnet.DLL文件到引用中,并将halconwindow添加至工具箱;

步骤如下:

引用-添加引用-(找到halcon中的halcondotnet.DLL进行添加)

 

第四步:

在工具箱中添加halconWindow控件

打开工具箱,在空白处右键-选择项-浏览,选择下边文件

 

第五步:

在Form1窗口添加一个button和halconWindow控件(工具箱中找halcon图

 第五步:

将导出的程序添加至现有程序的类中(其中就包含using halcondotnet;);

点击项目-添加-现有项-把刚才导出来的类添加进来

第六步:

在Form1.cs中,实例化刚才导进来的类:HDevelopExport HD = new HDevelopExport();

第七步:

在button_click中调用此类的方法:HD.RunHalcon(hWindowControl1.HalconWindow);

C#程序:

namespace Test_cat

{

  public partial class Form1 : Form

  {

    public Form1()

    {

      InitializeComponent();

    }

  HDevelopExport HD = new HDevelopExport();

  private void button1_Click(object sender, EventArgs e)

    {

      HD.RunHalcon(hWindowControl1.HalconWindow);

 

    }

  }

}

 

注意:如果在win64 系统下,则需要将平台更改为X64或者AnyCPU

 

halcon与C#混合编程之Halcon代码调用

 

写在前面

完成halcon与C#混合编程的环境配置后,进行界面布局设计构思每一个按钮所需要实现的功能,将Halcon导出的代码复制至相应的C#模块下即可。

 

halcon源程序:

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)

read_image (Image, 'C:/Users/Administrator/Desktop/猫.jpg')

dev_display(Image)

get_image_size(Image, Width, Height)

rgb3_to_gray(Image, Image, Image, ImageGray)

dev_display(ImageGray)

注意:写halcon程序时,如果过程中的图片需要显示出来,则需要在每个过程中都添加dev_display(**)

第一步:导出C#程序,建立项目,并添加此类

 

//

//  File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0

//

//  This file is intended to be used with the HDevelopTemplate or

//  HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\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, hv_Height;

    // 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, "C:/Users/Administrator/Desktop/猫¨.jpg");

    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("do_low_error", "false");

  }

  public void RunHalcon(HTuple Window)

  {

    hv_ExpDefaultWinHandle = Window;

    action();

  }

}

第二步:布局设计

 

本程序需要显示图片的halconWindow控件和读图以及处理图片的两个button控件;

 

第三步:将导出的类进行框架分解

 

如果想在程序中添加不同的按键,比如一个用来打开图片,一个用来处理图片,则就需要将halcon导出的类进行分解;

框架如下:

//定义变量

//初始化halcon

 public void InitHalcon()

  {

   //初始化halcon程序

  }

//读取图片

public void ReadPicture(HTuple Window)

{

//读图程序

 

}

//处理图片

 public void Process()

{

 

//处理程序

}

第四步:填补框架

 

将对应框架下得程序进行填补操作(下边程序可以代替public partial class HDevelopExport下的所有程序):

//定义变量

public HTuple hv_ExpDefaultWinHandle;

HObject ho_Image, ho_ImageGray;

HTuple hv_Width, hv_Height;

//初始化halcon

public void InitHalcon()

  {

    // Default settings used in HDevelop 

    HOperatorSet.SetSystem("do_low_error", "false");

  }

public void ReadPicture(HTuple Window)

{

    //读图并显示

   hv_ExpDefaultWinHandle = Window;

   HOperatorSet.GenEmptyObj(out ho_Image);

    ho_Image.Dispose();

    HOperatorSet.ReadImage(out ho_Image, "C:/Users/Administrator/Desktop/猫¨.jpg");

    HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);

    HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);

 

}

 public void Process()

{

    //处理程序

   HOperatorSet.GenEmptyObj(out ho_ImageGray);

    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();

}

第五步:在主程序Form1.cs中添加程序:

 

①在主程序Form1的类下对刚才添加的类进行实例化:

HDevelopExport hd = new HDevelopExport();

②在按键下添加相应程序

 private void button1_Click(object sender, EventArgs e)

 {

       hd.ReadPicture(hWindowControl1.HalconWindow);

  }

 private void button2_Click(object sender, EventArgs e)

{

      hd.Process();

 }

此步骤完成之后,程序可以运行。

附加步骤1:

 

在以上程序中,已经可以将图片显示出来,并进行处理,但由于窗口与图片的大小不一致,导致在显示窗口中不能适应程序窗口的大小,下面是解决此类问题的方法:

在读图程序中,将获取图片的大小的程序HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);放在显示图片之前,并在显示图片程序之前加入下面程序:

HOperatorSet.SetPart(hv_ExpDefaultWinHandle, 0, 0, hv_Height - 1, hv_Width - 1);然后图片就可以适应窗口大小。

此步骤也可以在halcon中更改。

附加步骤2:

 

如果想在程序中能够打开本地文件夹的图片进行处理,则需要改以下程序:

注意:①②是添加的类中③④是主程序中

①将public void ReadPicture(HTuple Window)的括号中加入参数,改为public void  ReadPicture(HTuple Window, string ImagePath)

②将 ReadPicture下的程序 HOperatorSet.ReadImage(out ho_Image, "C:/Users/Administrator/Desktop/猫¨.jpg");改为HOperatorSet.ReadImage(out ho_Image, ImagePath);

③主程序中定义变量string ImagePath

④将button1的程序改成如下:

     private void button1_Click(object sender, EventArgs e)

        {

            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Filter ="JPEG文件|*.jpg*|BMP文件|*.bmp*";

            openFileDialog1.RestoreDirectory = true;

            openFileDialog1.FilterIndex = 1;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                ImagePath = openFileDialog1.FileName;

                hd.ReadPicture(hWindowControl1.HalconWindow, ImagePath);

            }

        }

试试运行程序

 

 

News / 推荐新闻 More
2023 - 06 - 28
联为智能教育主要从事计算机软件技术咨询;企业自动化技术培训;教育设备研发生产;自动化设备的研发、有着丰富的教学经验,教学设备齐全,老师手把手带着做实操,辅导到个人,是一家实地工厂的培训机构目前开设课程PLC、电工电路,机器视觉、机器人等等。联为教育课程的优势优势一:零基础教学!从零开始,快速领您入门优势二:偏实操!“老师重点知识讲解,手把手带您做实操”,由浅入深,逐步讲解,学生容易吸收,快速提升!优势三:经验丰富!具有专业性,多种案例讲解,知识点考核、教学经验丰富,针对性强!优势四:推荐就业!指导就业方向,充实简历,推荐相关岗位工作重要通知机器视觉课程开班日期:2023年7月10日三菱PLC课程开班日期:随到随学  开设课程 01三菱PLC课程教学内容包括电工电路,电气制图,PLC编程、伺服,步进,触摸屏,变频器,模拟量,过程中结合多个实用案例教学01机器视觉课程教学内...
2022 - 10 - 20
自动化人才专场!免费展位!企业征集报名开始咯~广大自动化类企业注意了!10月28日(星期五)14:00—16:30 由深圳市龙华区人力资源局主办深圳市龙华区人力资源行业协会、深圳市联为智能教育有限公司开展的2022年龙华人才园“大国工匠 梦启龙华”系列公益招聘活动之“伯乐识良马,明主觅贤才”预约式自动化人才公益招聘会将在龙华人才园举办 现诚邀广大企业到场选聘自动化技术员、电气工程师、机构工程师、视觉工程师装配电工、装配钳工等各类自动化技术人才~   时间10月28日(星期五)14:00—16:30(活动最终实际举办时间将根据疫情情况确定)地址龙华人才园深圳市龙华区观湖街道环观南路61号龙华人才园 人才会堂主办单位深圳市龙华区人力资源局承办单位深圳市龙华区人力资源行业协会深圳市联为智能教育有限公司企业报名1.企业报名日期即日起至2022年10...
2022 - 09 - 17
关于举办“视觉定位工程实训”线下培训班 众所周知,工业机器人是制造业的高端制造设备,对于稳定性、定位精准度的要求,是 非常高的,因此,需要借助机器视觉技术处理图像,通过工业相机实现引导定位和模式识别 等操作,得快速获取物体的质心和边界,才能满足工业机器人系统运行的自定位需求。 联为智能教育特邀行业资深工程师共同举办视觉定位工程实训培训班。本次培训课程重 点介绍基于视觉定位项目要求所需的相机镜头相关参数,相机选型,精度评估,定位原理及 分类,标定设计等方面的知识和原理,并结合实际 案例和代码实制进行了详细的讲解和具 体的操作指导。具体通知事宜如下: 一、【培训目标】 1、能够利用图像处理软件进行具体定位项目的开展 2、对视觉定位原理有较深全面的理解,并代码实现。3、通过原理解析、典型实例操作强化应用,提升学员解决实际工程问题的能力。 学会如何设计标定,...
2022 - 07 - 22
电气工程系主任刘忠翔率队到深圳开展企业调研为深化校企合作,深入推进2020级学生岗位实习和学生就业工作。2022年6月21日,贵州装备制造职业学院电气工程系党总支书记兼主任一行4人到深圳市联为智能技术有限公司、深圳市海目星激光智能装备股份有限公司、深圳龙华区人才园等调研,并开展深入的交流座谈。交流座谈会上,深圳市联为智能技术有限公司董事长陈星树表示:贵州装备制造职业学院在专业技术、研究方向与公司发展高度契合,双方可以在促进智能制造毕业生高质量就业、专业人才培养、推进新型产教融合等方面深度合作。电气工程系党总支书记兼主任刘忠翔对贵州装备制造职业学院和系部的办学情况、学科建设情况等进行了介绍,希望双方尽快就智能制造新型产教融合相关细节展开深入沟通,促进学生高质量就业和发展,同时在智能制造领域开展长效的合作。调研过程中,刘忠翔一行还深入海目星自动化产线的装配调试现场实地考察,并与企业负责人、人力...
技术分享
 
2023 / 06 / 28
联为智能教育主要从事计算机软件技术咨询;企业自动化技术培训;教育设备研发生产;自动化设备的研发、有着丰富的教学经验,教学设备齐全,老师手把手...
 
联系方式
深圳市龙华区观澜街道桂香社区桂圆路23号联为智能装备数字产业园
1812977051@qq.com

15323438773 陈老师

0755-29495142

预约免费试听
  • 您的姓名:
  • *
  • 公司名称:
  • 地址:
  • 电话:
  • *
  • 传真:
  • E-mail:
  • 邮政编码:
  • 留言主题:
  • 详细说明:
  • *
     
联为智能教育专业打造自动化教育产、学、研一体化平台,成为智能制造教育领导者。联为plc培训班精心打造专业培训实操基地,专门为学员研发一批教学设备,包括机器人学习教学连线,plc培训学习教学连线,工业机器人培训、plc编程培训等专业的教学设备,让学员真正理论实践一体,学以致用,从实践交流中体会知识的精髓,来一场完美的职业转身。
扫码学习
深圳联为智能教育感谢您的关注!
plc学习
在线直播间
plc培训班
小胡老师
Copyright ©2005 - 2013 深圳市联为智能教育有限公司


犀牛云提供企业云服务
5
电话
  • 15323438773
6
二维码
回到顶部