Halcon 学习笔记--数组操作和文件(4)

一、数组操作

      对数组可以完成整体赋值,区域赋值,数组之间赋值,某个元素赋值(这个很类似Matlab)

       

count_seconds(T1)
Htuple1 := [1,2,3,4,5,6]
Htuple3 := sin(Htuple1)

*数组元素修改
Htuple1[2] := 'ABC'

*数组区域修改
Htuple1[1:3] := ['ccc','ddd','eee']

*数组之间赋值
Htuple2 := Htuple1[1:|Htuple1|-1]
count_seconds(T2)
T3 := T2-T1 

逐步运行

      count_seconds(t)算子是计算 程序运行的时间;

二、文件操作

      文件操作包括读和写,文件格式有:Text,图像,区域等,常用算子解释如下:

      1.open_file( : : FileNameFileType : FileHandle)

         FileType

        'output':创建新的文本,用write

        ‘append':在原有的文本基础上写入该文件

        'input':打开文件,打开一个已经存在的文件,用以read

     2.fwrite_string( : : FileHandleString : )

        写入文件

    3.fnew_line( : : FileHandle : )

       换行

    4.close_file( : : FileHandle : )

      关闭文件

   5.fread_char( : : FileHandle : Char)

     读入字符

   6.fread_line( : : FileHandle : OutLineIsEOF)

     行读取,IsEOF:判断是否到了文本文件的末尾

  7.fread_string( : : FileHandle : OutStringIsEOF)

read_image (Image, 'fabrik')
*区域增长算子
regiongrowing (Image, Regions, 3, 3, 6, 100)
count_obj (Regions, Number)
*创建一个即将要入数值文件
open_file ('E:/欣奕华/项目/Halcon/STUDY/网络课程笔记/1.文件数组/area.dat', 'output', FileHandle)
for I := 1 to Number by 1
    *选择区域
    select_obj (Regions, ObjectSelected, I)
    area_center (ObjectSelected, Area, Row, Column)
    *文件要写入值
    fwrite_string (FileHandle, I + ' ' + 'Row :'+ Row + '  Column :'+ Column + 'Area :'+Area )
    *换行
    fnew_line (FileHandle)
endfor

 regiongrowing (Image, Regions, 3, 3, 6, 100)  区域增长算子

函数作用:

用区域生长实现图像分割

函数原理:

如果相邻像素的灰度值差小于等于Tolerance,则被融为一个区域。因为矩形一般大于1个像素,所以常常在调用regiongrowing前会用大小至少为Row*Column的低通滤波器平滑一下。如果图像包含小噪声并且矩形很小,平滑后这些因素大都会被去除。而区域包含至少MinSize个点才被挑选出来。区域生长是一个非常快的算子,因此适合用于对时间要求严苛的应用中。

参数列表:

Image:输入图像

Regions:输出被分割后的区域

Row:被检测像素的行距离,Row >= 1 && odd(Row) (为奇数的意思)

Column:被检测像素的列距离,Column >= 1 && odd(Column)

Tolerance:被检测像素的灰度差小于等于该值时,被计入同一区域,Tolerance >= 0 && Tolerance < 127

MinSize:输出区域的最小大小,MinSize >= 1

算子时间复杂度:

如果N是输出区域的个数,M是这些区域中点的个数,那复杂度为O(N*log(M)*M)

原文地址:https://www.cnblogs.com/xingyuanzier/p/12902484.html