外部算子和halcon自带算子功能类似,充当一个功能的集合。
以《工业级视觉实用教程》中的gen_line为例子,首先把所有的源代码输入main函数窗口
- *关闭更新
- dev_update_off ( )
- *判断直线线段长度是否有效
- if(Length<1)
- return()
- endif
- *根据直线类型产生相应的图形对象
- if(RegionOrXLD='region')
- *产生区域图像
- gen_region_line (LineTemp, 0, 0, 0, Length-1)
- else
- *产生轮廓图形图像
- gen_contour_polygon_xld (LineTemp, [0,0], [0,Length-1])
- endif
- *求仿射变换矩阵
- vector_angle_to_rigid (0, 0 ,0 , Row, Col, -Angle, HomMat2D)
- *根据仿射变换矩阵取结果图形对象
- if(RegionOrXLD='region')
- affine_trans_region (LineTemp, Line, HomMat2D, 'false')
- else
- affine_trans_contour_xld (LineTemp, Line, HomMat2D)
- endif
- *打开更新
- dev_update_on ( )
- return ()
复制代码 最后的return()可以不用输入,当你创建外部函数的时候会自动添加。
选中所有代码然后右键“创建新函数”在打开的界面“创建函数”参照以下内容:
这部分只需要输入5个控制变量即可获取最终的Line图像变量。
调用:
- gen_line (Line, 200, 100, rad(90),100, 'region')
复制代码 参数 Line (output_object) | object → object | 输出图像变量:Line
|
Row (input_control) | integer → (tuple) | 直线的Row坐标
|
Col (input_control) | integer → (tuple) | 直线的Col坐标 |
Angle (input_control) | number → (tuple) | 直线的Angle角度 |
Length (input_control) | number → (tuple) | 直线的长度 |
RegionOrXLD (input_control) | string → (tuple) | 是生成Region类型还是xld类型的线,里面只判断了region其他都是xld
| Default Value: 'region' |
ps:
删除外部算子
过程->外部过程设置->外部函数 找到需要删除的外部函数,右键“删除选中的函数文件”!
当然也可以到保存的目录下去删除对应名称的文件也是可以的。。。
如果该选项为灰色不可选择,请在函数窗口里对你的算子进行编辑,取消"本地"选项,单独保存到其他目录下然后进行加载!
|