1、视觉软件
当我们拿到一个视觉项目,如果有一个拖拽式视觉软件去帮我们完成这样一个项目,既省时又省力,学什么halcon、opencv、visionpro,甚至头疼的C++、C#,统统不需要,也能快速成为一名视觉工程师,哈哈哈,这样一想门槛也太低了吧。下图海康的视觉软件vision master想必各位视觉大佬都不陌生吧,每个公司都有自己研发的视觉软件,市场上五花八门的软件,不过框架都差不多,学一个其他的也差不多了吧。这些视觉软件究竟为什么框选出一个区域,就能找到一个圆、一条线、识别出数字、或者其他特征呢,这个问题也困扰了我很久,奈何自己读书少,一直困惑于此,前几天闲来无事,工地搬完砖下班回到宿舍,打开才上手不久的halcon,和在工地上自学的C#,用底层代码去编写这样一个小视觉软件。
vision master
2、图像处理
利用halcon软件进行图像处理,这里用一个下班在路上捡的一个药品盖做一个模板匹配。图像处理上的细节不过多阐述,主要就是创造模板(create_shape_model)、寻找模板(create_shape_model)、点和角度刚性仿射变换,XLD轮廓任意仿射2D变换,相信各位大神对这些都不陌生,我就不在关公面前耍大刀,代码仅供跟我一样的小白参考,哈哈哈。
3、halcon导出c#
用halcon菜单栏文件,将算子代码转为c#代码,因为我们待会做界面要用winform来做,到时候直接用导出的代码,大神也可以用MFC编界面。
导出来之后,我们只需要关注action这个方法里面的代码,前面的都是定义变量,halcon的变量一般只有三个变量类型, HTuple数据变量(宽度,大小,数量),Hobject图像变量,HWindow 窗口句柄。
private void action()
{
// Local iconic variables
HObject ho_Qq20211015161226, ho_GrayImage;
HObject ho_Rectangle, ho_ImageReduced, ho_ModelContours;
HObject ho_ContoursAffineTrans, ho_RegionAffineTrans=null;
HObject ho_ContoursAffineTrans1=null, ho_Rectangle1=null;
// Local control variables
HTuple hv_WindowHandle = null, hv_Row1 = null;
HTuple hv_Column1 = null, hv_ModelID = null, hv_Area = null;
HTuple hv_Row = null, hv_Column = null, hv_HomMat2D = null;
HTuple hv_Angle = null, hv_Score = null, hv_i = null, hv_HomMat2DIdentity = new HTuple();
HTuple hv_HomMat2DTranslate = new HTuple(), hv_HomMat2DRotate = new HTuple();
HTuple hv_HomMat2D1 =