勇哥这套halcon引擎的学习笔记贴子共七篇,它是在官方指导文档《http://www.skcircle.com/?id=1343》的基础上学习编写而成的笔记。只是有一篇讲解怎么调用向量变量的没有加入,因为勇哥实在不知道这个向量变量有啥子用。以后如果搞明白了再加入吧。
2020/7/3勇哥注:
原来halcon中的向量就是个容器,跟c++标准模板库中的那个向量是一致的。第八篇加上来吧
halcon引擎学习笔记(七)在在HDevEngine/C#中使用实时编译器JIT
halcon引擎学习笔记(六)多线程并发执行外部函数,多窗口显示
halcon引擎学习笔记(二)执行Procedure程序,扩展名为hdvp的halcon函数
演示程序勇哥用的是halcon19.11,C#使用的是vs2013版本。
全部测试代码勇哥已经打包,请点击《下载》
如果你要调用的程序是一个hdev主程序,且当中没有外部函数或者自定义函数,则可以看(一)
如果你要调用的程序是一个hdev主程序,且当中有若干的外部函数或者自定义函数,则可以看(三)
如果你要调用的程序只是一个hdvp的外部函数,则可以看(二)
如果你需要多线程调用外部函数,则可以看(六)(七)
如果你的程序中用到向量变量,则可以看(八)
2020/10/15勇哥注:
勇哥最近寻遍halcon引擎类的功能,发现无法实现修改halcon程序并保存后,C#这边能实时运行修改后的halcon程序。
必须要退出C#程序后,再次执行才是跑的修改后的代码。
这真是个遗憾,因为机器正在做货时,重启C#程序是相当不方便的一件事。
如果有人知道怎么实现,麻烦告诉勇哥,非常感谢!
2020/12/18勇哥注:
由网友“小黄鱼”指出,HDevEngine 类有个UnloadProcedure方法调用后,可以实现不需要重启C#程序即可执行更新后的外部函数。
经我测试后,发现是有效的!
在这里非常感谢他的指点!!!
正文部分
========================
跟第五篇不同的是,本例是两个线程,两个窗体显示。
本例程序运行效果
源代码:
注意:下面的演示程序的源码需要扫码支付才可以看到。
如果你觉得不想支付,那么可以在CSDN下载中去下载,(https://download.csdn.net/download/suneggs/12556535)
train_shape_model.hdvp的参数
源码:
read_image (Image, './cap_illumination/cap_illumination_01.png') gen_circle (Circle, 495, 630, 290) reduce_domain (Image, Circle, ImageReduced) * create_scaled_shape_model (ImageReduced, 'auto', 0, rad(360), 'auto', 0.8, 1.2,\ 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID) get_shape_model_contours (ModelContours, ModelID, 1) return ()
train_datacode_model.hdvp的参数
源码:
create_data_code_2d_model ('Data Matrix ECC 200', [], [], ModelID) set_data_code_2d_param (ModelID, 'default_parameters', 'enhanced_recognition') return ()
detect_shape.hdvp的参数
源码:
find_scaled_shape_model (Image, ModelID, 0, rad(360), 0.98, 1.02, 0.4, 1, 1,\ 'least_squares_high', [5,3], 0.9, Rows, Columns, Angles, Scale, Score) if (|Rows| > 0) Row := Rows[0] Column := Columns[0] Angle := Angles[0] vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D) affine_trans_contour_xld (ModelContours, ResultObject, HomMat2D) DetectionSuccessful := 'true' else Row := -1 Column := -1 Angle := -1 DetectionSuccessful := 'false' endif ResultData := [Row,Column,Angle] return ()
detect_datacode.hdvp的参数
源码:
find_data_code_2d (Image, SymbolXLDs, ModelID, [], [], ResultHandles, DecodedDataStrings) if (|ResultHandles| > 0) select_obj (SymbolXLDs, ResultObject, 1) get_contour_xld (ResultObject, RowTuple, ColTuple) Row := max(RowTuple[0]) Column := min(ColTuple[0]) DetectionSuccessful := 'true' else Row := -1 Column := -1 DecodedDataStrings := 'no data' DetectionSuccessful := 'false' endif ResultData := [Row,Column,DecodedDataStrings] return ()
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

