鉴于很多刚学的同学学习需要,本文已经解除隐藏,造福大家,我们一起努力加油!
1.对Halcon基础类型认识不清楚?
一味的为了项目去学习Halcon,直接跳过基础知识到后面的核心部分。会导致一个问题,就是对基础操作的认识发生错误,导致发生一些很低级的错误。
比如对图像处理流程的顺序不清楚,导致什么呢?
请看下面代码:
- read_image (Image, 'clip')
- bin_threshold (Image, Region)
- select_shape (Region, SelectedRegions, 'area', 'and', 150, 99999)
复制代码 咋一看,没有什么错误。确实也没有什么错误,但是这个结果是你想要的结果吗???仔细分析下代码可以看出,阈值后没有进行连通性分析,导致筛选的是整个区域,有什么意义呢???
2.常识性变量混用错误
该错误产生的原因是类型混乱,导致图形类型和控制的混淆使用。还有就是哪些是Image类型、哪些是Region类型、哪些是XLD类型,一开始不需要你时刻在心里提醒自己,但是要做到与上句代码的对应关系。
我们一定要知道Halcon算子签名,那就是算子名称(图形输入:图形输出:控制输入:控制输出),知道了这个,那么混乱应该不至于了!
3.抄写错误
变量名称在Halcon中第一次出现的时候会自动声明并且赋值,这个时候如果你抄写少些了一个字符或者多写了一个字符,和之前的变量不一样的时候就会产生错误。导致使用了未声明的变量类型。这个在使用中要细心去发现和注意。
- read_image (Image, 'clip')
- bin_threshold (Image1, Region)
复制代码 上面这个代码,读取图片后接收的变量是Image,但是下面进行阈值的时候就变成了Image1了,肯定没有初始化对不对???
4.外部函数封装的形参与实参?
我们拿gen_line这个函数来讲解,实际调用的时候是这样:
- gen_line (Line, 50, 50, 45, 200, 'region')
复制代码 但是函数的声明是这样的
- gen_line( : Line : Row, Col, Angle, Length, RegionOrXLD : )
复制代码 那么除开Line这个输出的图形变量,其他部分都形参参数都被上面的实际参数替换了,这个时候实际的变化是这样的:- Row:=50
- Col:=50
- Angle:=45
- Lenght:=200
- RegionOrXLD:='region'
复制代码
这样,上面这个形参就被实际数值给赋值了,而在gen_line函数里面都是用的形参去实现的。
使用中这些所以的形参都会被实际参数替换,是不是很简单。
5.参数输入错误
一般情况下,如果没有复杂的数据,通过Tab按出来的自动补全输入的数据一般是正确的,但是代码和变量增加后可能显示的就不是你的设置的变量,这个时候输入的可能要求是控制类型的数组或者图形变量数组,而你输入的是单变量就会导致计算出现错误,这个时候会提示12xx、13xx、14xx、15xx这样的错误代码,这样的错误代码可以在https://www.51halcon.com/thread-1025-1-1.html找到最全的解释,全部都是摘自官方错误文档,常用的有中文解释,比如1201是控制类型数据异常,01代表是第一位参数,这里的位置都是从1开始的,具体需要了解算子的结构(输入图形:输出图形:输入控制:输出控制)这样的去对应就可以定位到具体的错误!
|