Halcon读取外部参数(读取CSV文件内保存的数据)
- 利用Halcon开发检测项目,避免不了需要读取一些保存在硬盘中的设置参数,例如系统配置、检测阈值等参数。在Halcon中以tuple格式保存数值或数组等,虽然可以将tuple写入硬盘进行数据保存,但是在修改的时候有诸多不便。最近研究了一下,总结了一个简单的实现方法,能够读取CSV文件保存的数据。
CSV是逗号分隔值(Comma-Separated Value)的英文缩写,文件以纯文本形式存储表格数据,包括数字和文本。记录之间有换行符进行分隔。每条记录的字段间通常是由逗号或制表符进行分隔,csv文件可以用office办公软件打开,因此修改和查看都非常方便,更重要的是halcon支持读取csv文件内容,所以我们利用csv文件来保存参数,并对它保存的参数进行读取。
首先创建一个csv文件,内容如下:
注:创建csv文件可以通过excel文档另存为csv文件实现,保存时如果提示“是否使用此格式”的提示,选择是。

先贴halcon代码
*打开csv文件,因为是读取保存内容,所以算子第二个参数选择“input”,如果选择其他项可能无法读出。FileHandle是打开文件的句柄
open_file ('D:/parameters.csv', 'input', FileHandle)
*初始化变量IsEOF为0,该变量用来判断是否读取到内容。
IsEOF:=0
while (IsEOF==0)
*读取打开文件中的一行内容,如果返回值IsEOF是0,则代表已经读取到。如果没有读取到则返回1
fread_line (FileHandle, outLine, IsEOF)
if (IsEOF==0)
*对读取到的内容进行分割,因为 fread_line算子读取出的是一个string形式的变量,需要对其进行分割
*从csv中读取出的内容是以逗号“,”或者换行符“\n”结尾的,tuple_split 算子中第二个参数是选择分隔符号的,所以输入“,\n”。
tuple_split (outLine, ', \n ', outLineSplit)
if(outLineSplit[0]='参数1')
*如果第一个字段是“参数1”,则将其对应的参数读取到变量value中
value:=outLineSplit[1]
break
endif
endif
endwhile
*关闭已经打开的csv文件
close_file(FileHandle)
下面的截图是上述代码是在HDevelop中执行的结果:

水平有限,难免有错误和不足之处,恳请批评指正。
本文介绍如何在Halcon中读取CSV文件内的数据作为外部参数,用于系统配置和检测阈值等。CSV文件因其方便的编辑和查看特性被选择作为参数存储方式。通过Halcon代码,演示了读取csv文件内容的过程。
2080





