如何学好halcon机器视觉编程
若以下回答无法解决问题,邀请你更新回答
展开全部
1、Halcon的语法结构特点;
类似于Pascal 与 Visual Basic,大部分的语句是Halcon提供的算子,此外也包含了少部分的控制语句;
不允许单独声明变量;
提供自动的内存管理(初始化、析构及OverWrite),但句柄则需要显示释放;
C++(算子模式)
通过代码导出,以C++为例,默认导出为算子型的语法结构,而非面向对象的;在此模式下,全部函数声明为全局类型,数据类型只需要用Hobject、HTuple两类类型进行声明;
C++(面向对象)
可以以面向对象的方式重写代码,也即利用类及类的成员函数;
在这种模式下,控制变量的类型仍未HTuple,而图形数据可以由多种类型,如HImage等;
其他语言(略)
HImage 可以查看halcon中类相关的内容
2、Halcon的数据类型;
两类参数:
1、图形参数Iconic (image, region, XLD)
2、与控制参数Control (string, integer, real, handle),
在Halcon算子的参数中,依次为:输入图形参数、输出图形参数、输入控制参数、输出控制参数;并且其输入参数不会被算子改变。
在这里就不具体讲了。
3、Halcon的基本语句;
1、标准赋值
Ø assign(Input, Result) //编辑形式,永远都是输入在前,输出在后
1: assign(sin(x) + cos(y), u)
Ø Result := Input //代码形式
1: u := sin(x) + cos(y) //与之前的assign(sin(x) + cos(y), u)是等价的
2、元组插入赋值
Ø insert(Tuple, NewValue, Index, Tuple) //编辑形式
1: Tuple := [1,2,3,4,5,6,7,8,9] 2: insert(Tuple,0,3,Tuple)
显示结果为:[1, 2, 3,0, 5, 6, 7, 8, 9]
……
4、HDevelop language(结构语句);
1) if ... endif / if ... else ... endif / if ... elseif ... else ... endif
2) for ... endfor
3) while ... endwhile
4) repeat ... until(循环体至少被执行一次,直到满足条件时退出。等同于C语言的do...while语句)
此外,也有关键字 break、continue、return、exit、stop 用来控制语句的执行;
5、异常处理
try ... catch ... endtry:异常算子处理句柄
throw:允许处理用户定义的意外情况。
用MFC写的,我在捕获异常提时候,都需要在前面使用HException::InstallHHandler(&CPPExpDefaultExceptionHandler);才能全try{..}catch(HException &except){..} 生效……
类似于Pascal 与 Visual Basic,大部分的语句是Halcon提供的算子,此外也包含了少部分的控制语句;
不允许单独声明变量;
提供自动的内存管理(初始化、析构及OverWrite),但句柄则需要显示释放;
C++(算子模式)
通过代码导出,以C++为例,默认导出为算子型的语法结构,而非面向对象的;在此模式下,全部函数声明为全局类型,数据类型只需要用Hobject、HTuple两类类型进行声明;
C++(面向对象)
可以以面向对象的方式重写代码,也即利用类及类的成员函数;
在这种模式下,控制变量的类型仍未HTuple,而图形数据可以由多种类型,如HImage等;
其他语言(略)
HImage 可以查看halcon中类相关的内容
2、Halcon的数据类型;
两类参数:
1、图形参数Iconic (image, region, XLD)
2、与控制参数Control (string, integer, real, handle),
在Halcon算子的参数中,依次为:输入图形参数、输出图形参数、输入控制参数、输出控制参数;并且其输入参数不会被算子改变。
在这里就不具体讲了。
3、Halcon的基本语句;
1、标准赋值
Ø assign(Input, Result) //编辑形式,永远都是输入在前,输出在后
1: assign(sin(x) + cos(y), u)
Ø Result := Input //代码形式
1: u := sin(x) + cos(y) //与之前的assign(sin(x) + cos(y), u)是等价的
2、元组插入赋值
Ø insert(Tuple, NewValue, Index, Tuple) //编辑形式
1: Tuple := [1,2,3,4,5,6,7,8,9] 2: insert(Tuple,0,3,Tuple)
显示结果为:[1, 2, 3,0, 5, 6, 7, 8, 9]
……
4、HDevelop language(结构语句);
1) if ... endif / if ... else ... endif / if ... elseif ... else ... endif
2) for ... endfor
3) while ... endwhile
4) repeat ... until(循环体至少被执行一次,直到满足条件时退出。等同于C语言的do...while语句)
此外,也有关键字 break、continue、return、exit、stop 用来控制语句的执行;
5、异常处理
try ... catch ... endtry:异常算子处理句柄
throw:允许处理用户定义的意外情况。
用MFC写的,我在捕获异常提时候,都需要在前面使用HException::InstallHHandler(&CPPExpDefaultExceptionHandler);才能全try{..}catch(HException &except){..} 生效……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询