编写一个简单的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类型
原图:
效果图: