在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Halcon的C#二次開發及經驗分享

新機器視覺 ? 來源:工控Zero ? 2023-06-27 14:51 ? 次閱讀

1、Halcon二次開發的兩種方式

① 使用C#的語法方式逐句改寫Halcon代碼

優點:各種變量的類型清楚,可讀性強,改寫后代碼行數幾乎不會增加多少。

缺點:改寫工作量大,容易出錯,如果Halcon代碼量大,后期將難以更新維護。

② 封裝成函數導出(推薦

優點:操作簡單,對開發人員編程能力要求低,工作量少,且便于維護。

缺點:Halcon函數導出的代碼可讀性極低,一旦丟失原Halcon文件,二次開發程序將難以更新維護。

建議:主二副一。

2、Halcon聯合C#開發必備的設置步驟(Halcon 12 + Visual studio 2013)

① 在項目“引用”中添加halcondotnet.dll。其一般路徑如下:

C:Program FilesMVTecHALCON-12.0indotnet35halcondotnet.dll

② 在“工具箱”的“選擇項”中添加hWindowControl控件,這是Halcon 12唯一提供的控件

③ 在用到Halcon代碼的類頂部添加using HalconDotNet;

④ 在“屬性”——“生成”中將目標平臺由“Any CPU”改為“x64”(計算機推薦使用64位系統)

⑤ 如果安裝Halcon時不是安裝在默認路徑,可能需要將halcon.dll文件復制到當前項目的輸出路徑下,halcon.dll的路徑為:C:Program FilesMVTecHALCON-12.0inx64-win64halcon.dll

3、Halcon圖形元素的顯示

hWindowControl1.HalconWindow.DispObj(image);//顯示圖像、Region、Xld

hWindowControl1.HalconWindow.SetDraw("margin");//設置填充的模式

hWindowControl1.HalconWindow.SetColor("green");//設置顯示顏色

4、系統全局參數設置(非必要,但建議設置)

HOperatorSet.SetSystem("do_low_error","false");//少報錯

HOperatorSet.SetSystem("clip_region","false");//region在圖像外不切掉

HOperatorSet.SetSystem("border_shape_models","true");//依然匹配邊緣的圖形

5、調試

C#中Halcon部分代碼的調試不太方便,但也不是毫無辦法。

① 調試時HTuple類型的變量可以直接查看值。

② Image、Region、Xld的變量一般只能通過“保存文件到本地”來查看變量情況。

HOperatorSet.WriteImage(image,"jpg",0x000000,"1.jpg");//彩色圖像

HOperatorSet.WriteImage(image,"jpg",0,"1.jpg");//灰度圖像

HOperatorSet.WriteRegion(ho_RegionUnion,"1.hobj");//后綴用.reg也行

HOperatorSet.WriteContourXldDxf(contours,"1.dxf");

③ 安裝Halcon的變量檢查插件到Visual Studio。該安裝文件所在的默認路徑為:

C:Program FilesMVTecHALCON-12.0miscHALCON_Variable_Inspect.vsix

6、在hWindowControl控件中顯示文字

以下兩個函數的內容由Halcon中的set_display_font和disp_message算子導出,可完成控件中的文字顯示。

set_display_font(windowHandle,hv_TextSize,"mono","true","false");

disp_message(windowHandle,hv_Text,"window",row,col,hv_Color,"true");

7、格式轉換

① HTuple兼容int、double等數據類型

② HObject類型的圖像兼容HImage類型的圖像

③ Bitmap轉Himage(24位或8位的)的方法如下:

public static HImage Bitmap2HImage_24(Bitmap bImage)
{
    Bitmap bImage24;
    BitmapData bmData = null;
    Rectangle rect;
    IntPtr pBitmap;
    IntPtr pPixels;
    HImage hImage = new HImage();
    rect = new Rectangle(0, 0, bImage.Width, bImage.Height);
    bImage24 = new Bitmap(bImage.Width, bImage.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bImage24);
    g.DrawImage(bImage, rect);
    g.Dispose();
    bmData = bImage24.LockBits(rect, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
    pBitmap = bmData.Scan0;
    pPixels = pBitmap;
    hImage.GenImageInterleaved(pPixels, "bgr", bImage.Width, bImage.Height, -1, "byte", 0, 0, 0, 0, -1, 0);
    bImage24.UnlockBits(bmData);


    return hImage;
}
public static HImage Bitmap2HImage_8(Bitmap bImage)
{
    Bitmap bImage8;
    BitmapData bmData = null;
    Rectangle rect;
    IntPtr pBitmap;
    IntPtr pPixels;
    var hImage = new HImage();
    rect = new Rectangle(0, 0, bImage.Width, bImage.Height);
    bmData = bImage.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
    pBitmap = bmData.Scan0;
    pPixels = pBitmap;
    hImage.GenImage1("byte", bImage.Width, bImage.Height, pPixels);
    bImage.UnlockBits(bmData);
    //formathimage = hImage;
    return hImage;
}

8、在hWindowControl控件中縮放圖像

在hWindowControl中鼠標位置可用GetMposition獲得,SetPart可改變窗口中顯示的圖像部分。

HOperatorSet.GetMposition(hWHandle,outmouseY,outmouseX,outmbutton);

HOperatorSet.SetPart(hWHandle,mRow1,mCol1,mRow2,mCol2);

set_part:用于修改窗口中顯示的圖像部分。(Row1,Column1) 表示要顯示的圖像部分的左上角, (Row2,Column2)表示要顯示的圖像部分的右下角。(詳見dev_set_part和set_part的幫助文檔)

9、Halcon圖形元素與其他圖像算法庫數據的交互

Halcon的Region、Xld是自己的特有格式,它們與外界是不通用的。目前我研究出來的主要是通過將坐標點作為橋梁來與外界進行數據交互。

Region轉化為坐標點:get_region_polygon(Region: :Tolerance:Rows,Columns)

坐標點轉化為Region:gen_region_polygon_filled( :Region:Rows,Columns: )

Xld轉化為坐標點 :get_contour_xld(Contour: : :Row,Col)

坐標點轉化為Xld :gen_contour_polygon_xld( :Contour:Row,Col: )

來源:工控Zero

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7494

    瀏覽量

    87955
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62618
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68612
  • HALCON
    +關注

    關注

    16

    文章

    64

    瀏覽量

    27224

原文標題:Halcon的C#二次開發及經驗分享

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    短信貓二次開發專家(DELPHI/ASP/PB/VB/VC/C#/JAVA/ 中間件數據庫接口

    短信貓二次開發專家(DELPHI/ASP/PB/VB/VC/C#/JAVA/ 中間件數據庫接口短信貓JAVA短信接口 JAVA短信控件 JAVA短信貓二次開發包金笛技術JAVA短信接口 JAVA短信
    發表于 11-26 14:01

    [轉帖]短信貓二次開發專家(DELPHI/ASP/PB/VB/VC/C#/JAVA/ 中間件數據庫接口

    短信貓二次開發專家(DELPHI/ASP/PB/VB/VC/C#/JAVA/ 中間件數據庫接口短信貓JAVA短信接口 JAVA短信控件 JAVA短信貓二次開發包金笛技術JAVA短信接口 JAVA短信
    發表于 11-26 20:09

    短信貓二次開發專家(DELPHI/ASP/PB/VB/VC/C#/JAVA/ 中間件數據庫接口)

    短信貓二次開發專家(DELPHI/ASP/PB/VB/VC/C#/JAVA/ 中間件數據庫接口)短信貓JAVA短信接口 JAVA短信控件 JAVA短信貓二次開發包金笛技術JAVA短信接口 JAVA
    發表于 01-10 16:35

    CAXA2011二次開發,CRX; CAX2007二次開發

    CAXA2011二次開發,CRX; CAX2007二次開發,EBA QQ:46841341 電話:*** 何生 標題、明細、自動參數化產生圖紙,PDM、PLM集成系統,面積、重量、各種個性化程序
    發表于 01-05 23:05

    手機模塊二次開發

    手機的wifi模塊、4g/3g通信模塊、藍牙模塊等固有模塊,在進行二次開發時,需不需要對硬件本身進行改造?或者是二次開發普遍都需要對硬件改造還是普遍都不需要對硬件改造??
    發表于 06-29 11:49

    地面站二次開發服務

    Mission Planner二次開發:基于MP地面站源碼,進行功能刪減、增加等;深度定制化地面站:基于MP地面站進行UI全新設計,功能增減,企業Logo定制;基于Mavlink協議地面站定制開發
    發表于 06-19 15:52

    AutoCAD的二次開發

    AutoCAD的二次開發 AutoCAD的二次開發主要涉及以下內容:(1) 編寫各種用戶自定義函數并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL
    發表于 02-14 16:59 ?1822次閱讀

    ANSYS的二次開發技術

    ANSYS的二次開發技術 ANSYS提供的二次開發工具有三個:參數化設計語言(ANSYS Parametric Design Language,APDL),用戶界面設計語言(User Interface
    發表于 10-02 10:42 ?2047次閱讀

    基于VC的Cadence二次開發

    文中研究了用VC對Cadence做二次開發,使用VC編寫操作界面,通過VC與SKILL語言通信,實現了VC界面對Cadence軟件的控制,完成特定操作,給出了實現的代碼。
    發表于 10-19 14:38 ?41次下載
    基于VC的Cadence<b class='flag-5'>二次開發</b>

    AutoCAD VBA二次開發教程

    AutoCAD VBA二次開發教程,學習二次開發的頂起
    發表于 11-02 16:16 ?0次下載

    二次開發串口通信協議

    lobot機器人二次開發
    發表于 05-09 08:55 ?7次下載

    對功率計進行二次開發

    功率計做二次開發首先要確認的就是通訊的接口,ZLG致遠電子PA300系列功率計提供USB、GPIB、以太網以及串口接口,4種接口免費標配,都可以用于二次開發
    的頭像 發表于 04-29 15:12 ?3054次閱讀

    LTE模塊A7600C1-MNSE二次開發硬件設計手冊

    LTE模塊A7600C1-MNSE二次開發硬件設計手冊
    發表于 08-12 15:31 ?12次下載

    空間光調制器的簡便控制方法:靈活應用二次開發

    01.什么是二次開發模式? 二次開發模式實際上就是一組指令集,不同于一個有窗口的軟件,這組指令集更像一根管道,管道的一端可以和任意編程軟件對接,管道的另外一頭就可以將結果展現在特定設備上,管道完成
    的頭像 發表于 05-11 13:37 ?653次閱讀
    空間光調制器的簡便控制方法:靈活應用<b class='flag-5'>二次開發</b>

    SOLIDWORKS二次開發應用范圍與實例

    SOLIDWORKS二次開發為企業和設計師們提供了廣闊的定制化空間,能夠更好地滿足復雜多變的設計需求,幫助工程師和設計師提高工作效率,實現更復雜的自動化任務。如您有SOLIDWORKS二次開發需求,歡迎咨詢Solidkits
    的頭像 發表于 12-13 16:33 ?171次閱讀
    主站蜘蛛池模板: 欧美一级高清免费a| 激情综合网五月激情| 国产精品一区二区三| 手机在线免费视频| 男人的天堂免费网站| 久久婷婷激情综合色综合也去| 夜夜夜精品视频免费| 黄色在线网站| 天天躁夜夜躁| 高清性色生活片欧美在线| 黄色网久久| 正在播放国产乱子伦视频| 免费一级视频在线播放| 国产欧美色图| 东北美女野外bbwbbw免费| 月夜免费观看完整视频| 黄色一级片在线观看| 男女性高爱麻豆| 最近最新视频中文字幕4| 香蕉蕉亚亚洲aav综合| 国产在线一卡| 澳门色视频| 四虎永久免费影院在线| 99久久999久久久综合精品涩| 免费在线观看的视频| 精品国产中文一级毛片在线看| 美女被拍拍拍拍拍拍拍拍| 欧美肥胖女人bbwbbw视频| 97色噜噜| 成 人在线观看视频网站| 乱色伦图片区| 亚洲人成电影在线| 玖玖激情| 国产精品九九热| 四虎网址| 天天爽夜夜爽人人爽一区二区| 女人十六毛片| 国产成人亚洲综合a∨婷婷| 国产精品夜色7777青苹果| 欧美一卡二三卡四卡不卡| 免费欧美黄色片|