Halcon自学笔记

编写一个简单的HDevelop程序(获得所有回形针的方向,并在中心位置显示)

1.首先读取一张图片:read_image (Image, 'G:/halcon/imgs/Clip.PNG')  Image为输出的变量名,后一个参数为图片路径

2.根据灰度值把回形针分离出来,使用灰度直方图获取阈值:threshold (Image, Region, 0, 56)   Image为输入的图像,Region为输出的图像,0,56为阈值

3.connection算子用来计算一个区域中联通的部分,用不同颜色表示出来:connection(Region,ConnectedRegions)  

Region为输入的图像,ConnectedRegions为输出的图像

4.根据特征选择区域:select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 475, 595)

5.获得回形针的方向和重心:

orientation_region(SelectedRegions,Phi)
area_center(SelectedRegions,Area,Row,Column)

算子orientation_region会返回一个元组Phi,数组的每个元素值表示:对象元组SelecetdRegions中对应的每个区域的方向。

算子area_center把每个区域的Area,Row,Column的值以元组的方式返回

6.在循环体中访问检测结果:

for Index := 0 to |Phi|-1 by 1
  set_tposition(3600,Row[Index],Column[Index])
  write_string(3600,deg(Phi[Index])+'degrees')
endfor

算子set_tposition把图形窗口中的文本光标位置移动至索引Index所对应的区域的中心位置。3600是目标图形窗口的窗口句柄(每个图形窗口对应一个窗口句柄)Row[Index]是HDevelop语言的另一个算子,通过它来访问Tuple元组中的元素。

算子write_string的作用是在图形窗口的光标位置输出一个指定字符串。

算子deg也是HDevelop语言的一部分,它的作用是把弧度转化成角度。

算子+的作用是将两个字符串合并成一个字符串,在本例中,在两个操作数+之前,HDevelop会自动进行类型转换,把deg(Phi[Index])从double转换成string类型

原图:

效果图:

原文地址:https://www.cnblogs.com/pushudepu/p/6217937.html