機器視覺檢測halcon與C#混合編程之環(huán)境配置

日期: 2017-07-27
瀏覽次數(shù): 593

?

機器視覺檢測halcon與C#混合編程之環(huán)境配置

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

第一步:導(dǎo)出C#-halcon./net 程序;(halcon11.0)

?

?

第二步:

新建C#窗體程序

?

第三步:

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

步驟如下:

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

?

第四步:

在工具箱中添加halconWindow控件

打開工具箱,在空白處右鍵-選擇項-瀏覽,選擇下邊文件

?

第五步:

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

?第五步:

將導(dǎo)出的程序添加至現(xiàn)有程序的類中(其中就包含using halcondotnet;);

點擊項目-添加-現(xiàn)有項-把剛才導(dǎo)出來的類添加進來

第六步:

在Form1.cs中,實例化剛才導(dǎo)進來的類:HDevelopExport HD = new HDevelopExport();

第七步:

在button_click中調(diào)用此類的方法: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 系統(tǒng)下,則需要將平臺更改為X64或者AnyCPU

?

halcon與C#混合編程之Halcon代碼調(diào)用

?

寫在前面

完成halcon與C#混合編程的環(huán)境配置后,進行界面布局設(shè)計構(gòu)思每一個按鈕所需要實現(xiàn)的功能,將Halcon導(dǎo)出的代碼復(fù)制至相應(yīng)的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(**)

第一步:導(dǎo)出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();

? }

}

第二步:布局設(shè)計

?

本程序需要顯示圖片的halconWindow控件和讀圖以及處理圖片的兩個button控件;

?

第三步:將導(dǎo)出的類進行框架分解

?

如果想在程序中添加不同的按鍵,比如一個用來打開圖片,一個用來處理圖片,則就需要將halcon導(dǎo)出的類進行分解;

框架如下:

//定義變量

//初始化halcon

?public void InitHalcon()

? {

? ?//初始化halcon程序

? }

//讀取圖片

public void ReadPicture(HTuple Window)

{

//讀圖程序

?

}

//處理圖片

?public void Process()

{

?

//處理程序

}

第四步:填補框架

?

將對應(yīng)框架下得程序進行填補操作(下邊程序可以代替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();

②在按鍵下添加相應(yīng)程序

?private void button1_Click(object sender, EventArgs e)

?{

? ? ? ?hd.ReadPicture(hWindowControl1.HalconWindow);

? }

?private void button2_Click(object sender, EventArgs e)

{

? ? ? hd.Process();

?}

此步驟完成之后,程序可以運行。

附加步驟1:

?

在以上程序中,已經(jīng)可以將圖片顯示出來,并進行處理,但由于窗口與圖片的大小不一致,導(dǎo)致在顯示窗口中不能適應(yīng)程序窗口的大小,下面是解決此類問題的方法:

在讀圖程序中,將獲取圖片的大小的程序HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);放在顯示圖片之前,并在顯示圖片程序之前加入下面程序:

HOperatorSet.SetPart(hv_ExpDefaultWinHandle, 0, 0, hv_Height - 1, hv_Width - 1);然后圖片就可以適應(yīng)窗口大小。

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

附加步驟2:

?

如果想在程序中能夠打開本地文件夾的圖片進行處理,則需要改以下程序:

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

①將public void ReadPicture(HTuple Window)的括號中加入?yún)?shù),改為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
聯(lián)為智能教育主要從事計算機軟件技術(shù)咨詢;企業(yè)自動化技術(shù)培訓(xùn);教育設(shè)備研發(fā)生產(chǎn);自動化設(shè)備的研發(fā)、有著豐富的教學(xué)經(jīng)驗,教學(xué)設(shè)備齊全,老師手把手帶著做實操,輔導(dǎo)到個人,是一家實地工廠的培訓(xùn)機構(gòu)目前開設(shè)課程PLC、電工電路,機器視覺、機器人等等。聯(lián)為教育課程的優(yōu)勢優(yōu)勢一:零基礎(chǔ)教學(xué)!從零開始,快速領(lǐng)您入門優(yōu)勢二:偏實操!“老師重點知識講解,手把手帶您做實操”,由淺入深,逐步講解,學(xué)生容易吸收,快速提升!優(yōu)勢三:經(jīng)驗豐富!具有專業(yè)性,多種案例講解,知識點考核、教學(xué)經(jīng)驗豐富,針對性強!優(yōu)勢四:推薦就業(yè)!指導(dǎo)就業(yè)方向,充實簡歷,推薦相關(guān)崗位工作重要通知機器視覺課程開班日期:2023年7月10日三菱PLC課程開班日期:隨到隨學(xué)  開設(shè)課程 01三菱PLC課程教學(xué)內(nèi)容包括電工電路,電氣制圖,PLC編程、伺服,步進,觸摸屏,變頻器,模擬量,過程中結(jié)合多個實用案例教學(xué)01機器視覺課程教學(xué)內(nèi)...
2022 - 10 - 20
自動化人才專場!免費展位!企業(yè)征集報名開始咯~廣大自動化類企業(yè)注意了!10月28日(星期五)14:00—16:30 由深圳市龍華區(qū)人力資源局主辦深圳市龍華區(qū)人力資源行業(yè)協(xié)會、深圳市聯(lián)為智能教育有限公司開展的2022年龍華人才園“大國工匠 夢啟龍華”系列公益招聘活動之“伯樂識良馬,明主覓賢才”預(yù)約式自動化人才公益招聘會將在龍華人才園舉辦 現(xiàn)誠邀廣大企業(yè)到場選聘自動化技術(shù)員、電氣工程師、機構(gòu)工程師、視覺工程師裝配電工、裝配鉗工等各類自動化技術(shù)人才~   時間10月28日(星期五)14:00—16:30(活動最終實際舉辦時間將根據(jù)疫情情況確定)地址龍華人才園深圳市龍華區(qū)觀湖街道環(huán)觀南路61號龍華人才園 人才會堂主辦單位深圳市龍華區(qū)人力資源局承辦單位深圳市龍華區(qū)人力資源行業(yè)協(xié)會深圳市聯(lián)為智能教育有限公司企業(yè)報名1.企業(yè)報名日期即日起至2022年10...
2022 - 09 - 17
關(guān)于舉辦“視覺定位工程實訓(xùn)”線下培訓(xùn)班 眾所周知,工業(yè)機器人是制造業(yè)的高端制造設(shè)備,對于穩(wěn)定性、定位精準度的要求,是 非常高的,因此,需要借助機器視覺技術(shù)處理圖像,通過工業(yè)相機實現(xiàn)引導(dǎo)定位和模式識別 等操作,得快速獲取物體的質(zhì)心和邊界,才能滿足工業(yè)機器人系統(tǒng)運行的自定位需求。 聯(lián)為智能教育特邀行業(yè)資深工程師共同舉辦視覺定位工程實訓(xùn)培訓(xùn)班。本次培訓(xùn)課程重 點介紹基于視覺定位項目要求所需的相機鏡頭相關(guān)參數(shù),相機選型,精度評估,定位原理及 分類,標定設(shè)計等方面的知識和原理,并結(jié)合實際 案例和代碼實制進行了詳細的講解和具 體的操作指導(dǎo)。具體通知事宜如下: 一、【培訓(xùn)目標】 1、能夠利用圖像處理軟件進行具體定位項目的開展 2、對視覺定位原理有較深全面的理解,并代碼實現(xiàn)。3、通過原理解析、典型實例操作強化應(yīng)用,提升學(xué)員解決實際工程問題的能力。 學(xué)會如何設(shè)計標定,...
2022 - 07 - 22
電氣工程系主任劉忠翔率隊到深圳開展企業(yè)調(diào)研為深化校企合作,深入推進2020級學(xué)生崗位實習(xí)和學(xué)生就業(yè)工作。2022年6月21日,貴州裝備制造職業(yè)學(xué)院電氣工程系黨總支書記兼主任一行4人到深圳市聯(lián)為智能技術(shù)有限公司、深圳市海目星激光智能裝備股份有限公司、深圳龍華區(qū)人才園等調(diào)研,并開展深入的交流座談。交流座談會上,深圳市聯(lián)為智能技術(shù)有限公司董事長陳星樹表示:貴州裝備制造職業(yè)學(xué)院在專業(yè)技術(shù)、研究方向與公司發(fā)展高度契合,雙方可以在促進智能制造畢業(yè)生高質(zhì)量就業(yè)、專業(yè)人才培養(yǎng)、推進新型產(chǎn)教融合等方面深度合作。電氣工程系黨總支書記兼主任劉忠翔對貴州裝備制造職業(yè)學(xué)院和系部的辦學(xué)情況、學(xué)科建設(shè)情況等進行了介紹,希望雙方盡快就智能制造新型產(chǎn)教融合相關(guān)細節(jié)展開深入溝通,促進學(xué)生高質(zhì)量就業(yè)和發(fā)展,同時在智能制造領(lǐng)域開展長效的合作。調(diào)研過程中,劉忠翔一行還深入海目星自動化產(chǎn)線的裝配調(diào)試現(xiàn)場實地考察,并與企業(yè)負責(zé)人、人力...
技術(shù)分享
 
2023 / 06 / 28
聯(lián)為智能教育主要從事計算機軟件技術(shù)咨詢;企業(yè)自動化技術(shù)培訓(xùn);教育設(shè)備研發(fā)生產(chǎn);自動化設(shè)備的研發(fā)、有著豐富的教學(xué)經(jīng)驗,教學(xué)設(shè)備齊全,老師手把手...
 
聯(lián)系方式
深圳市龍華區(qū)觀瀾街道桂香社區(qū)桂圓路23號聯(lián)為智能裝備數(shù)字產(chǎn)業(yè)園
1812977051@qq.com

15323438773 陳老師

0755-29495142

預(yù)約免費試聽
  • 您的姓名:
  • *
  • 公司名稱:
  • 地址:
  • 電話:
  • *
  • 傳真:
  • E-mail:
  • 郵政編碼:
  • 留言主題:
  • 詳細說明:
  • *
     
聯(lián)為智能教育專業(yè)打造自動化教育產(chǎn)、學(xué)、研一體化平臺,成為智能制造教育領(lǐng)導(dǎo)者。聯(lián)為plc培訓(xùn)班精心打造專業(yè)培訓(xùn)實操基地,專門為學(xué)員研發(fā)一批教學(xué)設(shè)備,包括機器人學(xué)習(xí)教學(xué)連線,plc培訓(xùn)學(xué)習(xí)教學(xué)連線,工業(yè)機器人培訓(xùn)、plc編程培訓(xùn)等專業(yè)的教學(xué)設(shè)備,讓學(xué)員真正理論實踐一體,學(xué)以致用,從實踐交流中體會知識的精髓,來一場完美的職業(yè)轉(zhuǎn)身。
掃碼學(xué)習(xí)
深圳聯(lián)為智能教育感謝您的關(guān)注!
plc學(xué)習(xí)
在線直播間
plc培訓(xùn)班
小胡老師
5
電話
  • 15323438773
6
二維碼
回到頂部
曰本女人牲交全视免费播放,人妻少妇看A偷人无码精品,日本在线不卡一区二区,国产网站在线免费观看 ,日韩在线三级视频,91社区在线观看精品,国产成人精品三级在线观看,人人爽人人添人人超,精品欧洲AV无码一区二区男男,综合久久久久久中文字幕
欧美黑人巨大精品一区二区| 国产在线精品一区二区不卡| 亚洲国产精品一区二区三区久久| 久久久久人妻一区二区三区| 国产精品久久久久久成人影院 | 国产激情无码一区二区| 亚洲AV无码专区亚洲AV| 欧美人与动交zozo| 国产无遮挡又爽又刺激的视频老师| 亚洲精品无码午夜福利理论片| 国产激情无码视频一区二区三区| 中文字幕在线视频不卡| 日韩欧精品无码视频无删节| 动漫人妻h无码中文字幕| 99久久er热在这里都是精品99| 亚洲精品国产高清在线观看| 最新喷水岛国v视频在线| 亚洲乱码av一区二区| 免费无码百合真人片18禁| 久久综合无码| 高清无码黄网站| 波多野结衣网站WWW| 国产午夜无码福利在线看网站| 久久久久久国产精品美女| 亚洲首页一区任你躁xxxxx| 99精品人妻少妇一区二区| 欧美性性性性性色大片免费的| 人妻激情乱人伦| 996久久国产精品线观看| 国产dvd毛片在线视频| 国产午夜精品久久久久免费视| 又黄又粗又大又长的免费视频| 国产成人一区二区三区免费视频 | 性色av无码专区一ⅴa亚洲| 亚洲AⅤ久久久噜噜噜噜| 天天狠天天透天干天天怕∴| 亚洲欧洲日产国码二区| 午夜一级免费视频| 综合激情久久综合激情| 久久综合九色综合欧美婷婷| 国产精品视频3p|