用Halcon開發(fā)檢測算法一般有兩種方法:
根據(jù)直接調(diào)用Halcon在對應(yīng)語言平臺下的算子接口
用Halcon自帶的腳本語言開發(fā)算法然后轉(zhuǎn)成C#類
第一種自由度比較高,代碼看起來也比較簡潔易懂,但上手比較困難。第二種更簡單,但生成的類很難看,而且與程序集成的時候需要做一些改動。兩種方法并不是絕對對立的,一般會先用Halcon驗證算法,然后參考導(dǎo)出的C#類實現(xiàn)自己的檢測算法。
抓邊算法
2D測量模型
簡述一下2D 測量的使用步驟:
創(chuàng)建測量模型并指定圖像大。菏紫缺仨毷褂胏reate_metrology_model創(chuàng)建測量模型,然后使用set_metrology_model_image_size指定測量結(jié)果所在的圖像的大小。
大林上位機機器視覺,_常州電工培訓_常州PLC培訓_常州機器視覺培訓_常州上位機培訓_常州工業(yè)機器人培訓,最適合電工及plc編程人員學習的上位機機器視覺課程 大林老師:15861139266(微信同號)
提供近似值:將測量對象添加到測量模型中,每個測量對象由圖像中相應(yīng)對象的近似形狀參數(shù)和控制測量的參數(shù)組成,控制測量的參數(shù)包括例如指定測量區(qū)域的尺寸和分布的參數(shù),測量對象有以下幾種:
圓:add_metrology_object_circle_measure
橢圓:add_metrology_object_ellipse_measure
矩形:add_metrology_object_rectangle2_measure
線:add_metrology_object_line_measure
使用一個運算符創(chuàng)建不同形狀:add_metrology_object_generic
要直觀檢查定義的度量對象,可以使用運算符get_metrology_object_model_contour訪問其XLD輪廓。要直觀檢查創(chuàng)建的測量區(qū)域,可以使用運算符get_metrology_object_measures訪問其XLD輪廓。
修改模型參數(shù):如果已執(zhí)行相機校準,則可以使用set_metrology_model_param,沒有就忽略(本示例沒有使用)。
修改對象參數(shù):當將測量對象添加到測量模型時,可以設(shè)置許多參數(shù),之后還可以使用運算符set_metrology_object_param修改其中的一些(本示例是在添加時設(shè)置的參數(shù),所以沒有此步驟)。
調(diào)整測量模型:在執(zhí)行下一次測量之前平移和旋轉(zhuǎn)測量模型,可以使用操作員align_metrology_model。通常使用基于形狀的匹配來獲得對準參數(shù),相當于測量前的位置就糾偏(本示例比較簡單沒有此步驟)。
應(yīng)用測量:使用apply_metrology_model執(zhí)行測量過程。
訪問結(jié)果:測量后,可以使用get_metrology_object_result訪問結(jié)果,也可以使用get_metrology_object_measures獲取定位邊的行坐標和列坐標再進一步處理(本示例使用前者)。
代碼實現(xiàn)
抓變算法的C#代碼如下:
private void button_FindEdge_Click(object sender, EventArgs e)
{
//創(chuàng)建測量對象
HMetrologyModel hMetrologyModely = new HMetrologyModel();
//設(shè)置圖片大小
image.GetImageSize(out int width, out int height);
hMetrologyModely.SetMetrologyModelImageSize(width, height);
//添加直線測量
double measureLength1= 30, measureLength2=30, measureSigma=1, measureThreshold=30;
HTuple genParamName = new HTuple(), genParamValue = new HTuple();
hMetrologyModely.AddMetrologyObjectLineMeasure(line.Row1, line.Column1,line.Row2, line.Column2, measureLength1, measureLength2, measureSigma, measureThreshold, genParamName, genParamValue);
//執(zhí)行并獲取結(jié)果
hMetrologyModely.ApplyMetrologyModel(image);
//獲取測量區(qū)域
HTuple mRow = new HTuple(), mCol = new HTuple();
HXLDCont mContours = hMetrologyModely.GetMetrologyObjectMeasures("all", "all", out mRow, out mCol); //檢測區(qū)域輪廓
HXLDCont mmContours = hMetrologyModely.GetMetrologyObjectModelContour("all", 1); //測量對象輪廓
//參數(shù)順序 ["row_begin", "column_begin", "row_end", "column_end"]
HTuple lineRet =hMetrologyModely.GetMetrologyObjectResult("all", "all", "result_type", "all_param");
double[] retAry = lineRet.DArr;
//打印結(jié)果
hwindow.SetLineWidth(2);
hwindow.SetColor("green");
hwindow.DispLine(retAry, retAry, retAry, retAry);
hwindow.SetColor("blue");
hwindow.DispXld(mContours);
hwindow.SetColor("yellow");
hwindow.DispXld(mmContours);
//清空測量對象
hMetrologyModely.ClearMetrologyModel();
//清理對象
hMetrologyModely?.Dispose();
genParamName?.Dispose();
genParamValue?.Dispose();
mRow.Dispose();
mCol.Dispose();
mContours.Dispose();
mmContours.Dispose();
}
Halcon的代碼如下:
大林上位機機器視覺,_常州電工培訓_常州PLC培訓_常州機器視覺培訓_常州上位機培訓_常州工業(yè)機器人培訓,最適合電工及plc編程人員學習的上位機機器視覺課程 大林老師:15861139266(微信同號)
*讀取圖片
read_image (Image, 'D:/test.bmp')
dev_get_window (WindowHandle)
*畫線
Row1:=1218.79
Column1:=1002.95
Row2:=1242.07
Column2:=2786.18
*draw_line (WindowHandle, Row1, Column1, Row2, Column2)
*gen_region_line (RegionLines, Row1, Column1, Row2, Column2)
*創(chuàng)建測量幾何形狀所需的數(shù)據(jù)結(jié)構(gòu)
create_metrology_model (MetrologyHandle)
get_image_size (Image, Width, Height)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
add_metrology_object_line_measure (MetrologyHandle, Row1, Column1, Row2, Column2, 100, 50, 1, 30, [], [], Index)
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type','all_param', Parameter)
get_metrology_object_measures(Contours, MetrologyHandle, 'all', 'all', Row, Column)
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
*清空測量對象,否則會導(dǎo)致內(nèi)存泄露
clear_metrology_model (MetrologyHandle)
*可視化
dev_clear_window ()
dev_display(Image)
dev_set_color('green')
dev_set_line_width(1)
disp_line (WindowHandle, Parameter, Parameter, Parameter, Parameter)
dev_display (Contours)
dev_display (Contour)
使用方法
直接在界面上點擊“打開圖片”->“畫線ROI”(默認位置我都調(diào)好了,你也可以自己調(diào)整大小、位置)->“抓邊”,過程如下:
一、課程目標
本公司本著為工控事業(yè)培育和輸出從電工基礎(chǔ)到機器視覺的人才理念,著力于讓小白成為工控業(yè)專家為目標。
大林上位機視覺軟件培訓專家特開設(shè)從電工基礎(chǔ)、PLC、運動控制、上位機、工業(yè)機器人、機器視覺培訓課程,為實現(xiàn)工業(yè)4.0事業(yè)而不懈努力。
機構(gòu)課程全程真實教學、實干為主,不裝逼,不扯淡,只嘮干貨,能做項目!!
二、老師介紹
大林老師
是專業(yè)從事上位機視覺軟件的開發(fā)與培訓,多年從事上位機機器視覺相關(guān)項目開發(fā),對電氣人員學習C#開發(fā)視覺軟件有獨到的見解,即使您是零基礎(chǔ)或只要從事過電氣自動化相關(guān)工作的學員都能夠輕松快速學會。
三、校區(qū)介紹
大林上位機機器視覺培訓機構(gòu),分為兩個校區(qū),蘇州校區(qū)(蘇州木瀆),常州校區(qū)(常州新北)
四、硬件設(shè)施
校區(qū)提供2000多平方的實訓基地,完美的設(shè)備硬件配套,可以做到邊學習邊操作,鑒于本機構(gòu)隸屬于某自動化公司,學員可以配合邊學習邊配合公司開發(fā)人員完成項目,這樣學習起來事半功倍
五、畢業(yè)服務(wù)
學業(yè)完成后本公司可以擇優(yōu)錄取,在我們自動化公司的實習,解決您的后顧之憂
六、課程對象
1.零基礎(chǔ)無任何相關(guān)知識
2.有電氣及PLC編程基礎(chǔ)的更容易入手
3.需要系統(tǒng)性提升整體能力
4.跨行業(yè)轉(zhuǎn)型
5.想擁有一份體面高收入
6.對自己前途迷茫
7.學歷低英語不好
七、課程特色
為您量身提供零基礎(chǔ)快速成為上位機及機器視覺軟件開發(fā)專家的學習方案
承接企事業(yè)單位定制個性化學員集體培訓。
八、課程內(nèi)容
小白亦可通過學習成為工業(yè)軟件開發(fā)專家,從電氣圖,到梯形圖,到高級語言SCL,再到C#,突破高級語言難的瓶頸,輕松掌握。
從零開始,從電氣基本元件入手,跟隨課程遞進學習,PLC,工業(yè)機器人,數(shù)據(jù)庫,運動控制器,上位機,機器視覺,統(tǒng)統(tǒng)一網(wǎng)打盡。
歡迎親臨現(xiàn)場咨詢,老師私人定制課程 ,學習更清晰!
九、授課方式
1、線下現(xiàn)場授課更直觀,知識點更易吸收,現(xiàn)場互動更易理解和運用。
1,贈送老師錄制課程隨時隨地輕松學習
2,贈送配套書籍不限環(huán)境隨意學習
3,課間和課后答疑知識掌握更牢固
4,現(xiàn)場設(shè)備隨意使用,人機結(jié)合熟練運用,加深知識理解。
5,老師指導(dǎo)完善簡歷,輕松上崗。
2、線上視頻錄播課程-整套
1,贈送配套書籍不限環(huán)境隨意學習
2,售后答疑輕松解答
3,福利:線下報名課程原價抵扣
3、 線上視頻課程+現(xiàn)場設(shè)備實操
1,贈送配套書籍不限環(huán)境隨意學習
2,售后答疑輕松解答
3,現(xiàn)場和課后答疑知識掌握更牢固
4,現(xiàn)場設(shè)備隨意使用,人機結(jié)合熟練運用,加深知識理解
5,福利:線下報名課程原價抵扣