用Halcon开发检测算法一般有两种方法:
根据直接调用Halcon在对应语言平台下的算子接口
用Halcon自带的脚本语言开发算法然后转成C#类
第一种自由度比较高,代码看起来也比较简洁易懂,但上手比较困难。第二种更简单,但生成的类很难看,而且与程序集成的时候需要做一些改动。两种方法并不是绝对对立的,一般会先用Halcon验证算法,然后参考导出的C#类实现自己的检测算法。
抓边算法
2D测量模型
简述一下2D 测量的使用步骤:
创建测量模型并指定图像大小:首先必须使用create_metrology_model创建测量模型,然后使用set_metrology_model_image_size指定测量结果所在的图像的大小。
大林上位机机器视觉,_常州电工培训_常州PLC培训_常州机器视觉培训_常州上位机培训_常州工业机器人培训,最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
提供近似值:将测量对象添加到测量模型中,每个测量对象由图像中相应对象的近似形状参数和控制测量的参数组成,控制测量的参数包括例如指定测量区域的尺寸和分布的参数,测量对象有以下几种:
圆:add_metrology_object_circle_measure
椭圆:add_metrology_object_ellipse_measure
矩形:add_metrology_object_rectangle2_measure
线:add_metrology_object_line_measure
使用一个运算符创建不同形状:add_metrology_object_generic
要直观检查定义的度量对象,可以使用运算符get_metrology_object_model_contour访问其XLD轮廓。要直观检查创建的测量区域,可以使用运算符get_metrology_object_measures访问其XLD轮廓。
修改模型参数:如果已执行相机校准,则可以使用set_metrology_model_param,没有就忽略(本示例没有使用)。
修改对象参数:当将测量对象添加到测量模型时,可以设置许多参数,之后还可以使用运算符set_metrology_object_param修改其中的一些(本示例是在添加时设置的参数,所以没有此步骤)。
调整测量模型:在执行下一次测量之前平移和旋转测量模型,可以使用操作员align_metrology_model。通常使用基于形状的匹配来获得对准参数,相当于测量前的位置就纠偏(本示例比较简单没有此步骤)。
应用测量:使用apply_metrology_model执行测量过程。
访问结果:测量后,可以使用get_metrology_object_result访问结果,也可以使用get_metrology_object_measures获取定位边的行坐标和列坐标再进一步处理(本示例使用前者)。
代码实现
抓变算法的C#代码如下:
private void button_FindEdge_Click(object sender, EventArgs e)
{
//创建测量对象
HMetrologyModel hMetrologyModely = new HMetrologyModel();
//设置图片大小
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);
//执行并获取结果
hMetrologyModely.ApplyMetrologyModel(image);
//获取测量区域
HTuple mRow = new HTuple(), mCol = new HTuple();
HXLDCont mContours = hMetrologyModely.GetMetrologyObjectMeasures("all", "all", out mRow, out mCol); //检测区域轮廓
HXLDCont mmContours = hMetrologyModely.GetMetrologyObjectModelContour("all", 1); //测量对象轮廓
//参数顺序 ["row_begin", "column_begin", "row_end", "column_end"]
HTuple lineRet =hMetrologyModely.GetMetrologyObjectResult("all", "all", "result_type", "all_param");
double[] retAry = lineRet.DArr;
//打印结果
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培训_常州机器视觉培训_常州上位机培训_常州工业机器人培训,最适合电工及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)
*创建测量几何形状所需的数据结构
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)
*清空测量对象,否则会导致内存泄露
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”(默认位置我都调好了,你也可以自己调整大小、位置)->“抓边”,过程如下:
一、课程目标
本公司本着为工控事业培育和输出从电工基础到机器视觉的人才理念,着力于让小白成为工控业专家为目标。
大林上位机视觉软件培训专家特开设从电工基础、PLC、运动控制、上位机、工业机器人、机器视觉培训课程,为实现工业4.0事业而不懈努力。
机构课程全程真实教学、实干为主,不装逼,不扯淡,只唠干货,能做项目!!
二、老师介绍
大林老师
是专业从事上位机视觉软件的开发与培训,多年从事上位机机器视觉相关项目开发,对电气人员学习C#开发视觉软件有独到的见解,即使您是零基础或只要从事过电气自动化相关工作的学员都能够轻松快速学会。
三、校区介绍
大林上位机机器视觉培训机构,分为两个校区,苏州校区(苏州木渎),常州校区(常州新北)
四、硬件设施
校区提供2000多平方的实训基地,完美的设备硬件配套,可以做到边学习边操作,鉴于本机构隶属于某自动化公司,学员可以配合边学习边配合公司开发人员完成项目,这样学习起来事半功倍
五、毕业服务
学业完成后本公司可以择优录取,在我们自动化公司的实习,解决您的后顾之忧
六、课程对象
1.零基础无任何相关知识
2.有电气及PLC编程基础的更容易入手
3.需要系统性提升整体能力
4.跨行业转型
5.想拥有一份体面高收入
6.对自己前途迷茫
7.学历低英语不好
七、课程特色
为您量身提供零基础快速成为上位机及机器视觉软件开发专家的学习方案
承接企事业单位定制个性化学员集体培训。
八、课程内容
小白亦可通过学习成为工业软件开发专家,从电气图,到梯形图,到高级语言SCL,再到C#,突破高级语言难的瓶颈,轻松掌握。
从零开始,从电气基本元件入手,跟随课程递进学习,PLC,工业机器人,数据库,运动控制器,上位机,机器视觉,统统一网打尽。
欢迎亲临现场咨询,老师私人定制课程 ,学习更清晰!
九、授课方式
1、线下现场授课更直观,知识点更易吸收,现场互动更易理解和运用。
1,赠送老师录制课程随时随地轻松学习
2,赠送配套书籍不限环境随意学习
3,课间和课后答疑知识掌握更牢固
4,现场设备随意使用,人机结合熟练运用,加深知识理解。
5,老师指导完善简历,轻松上岗。
2、线上视频录播课程-整套
1,赠送配套书籍不限环境随意学习
2,售后答疑轻松解答
3,福利:线下报名课程原价抵扣
3、 线上视频课程+现场设备实操
1,赠送配套书籍不限环境随意学习
2,售后答疑轻松解答
3,现场和课后答疑知识掌握更牢固
4,现场设备随意使用,人机结合熟练运用,加深知识理解
5,福利:线下报名课程原价抵扣