halcon学习笔记——实例篇 长度和角度测量.docx
halcon学习笔记——实例篇 长度和角度测量
实例二:长度和角度测量素材图片:
halcon代码:
1:
1:*读取并截取图片
2:dev_close_window()
3:read_image(Image,D:/MyFile/halcon/长度和角度测量/图.png)4:crop_rectangle1(Image,ImagePart,75,0,400,400)
5:get_image_size(ImagePart,Width,Height)
6:dev_open_window(0,0,Width,Height,black,WindowHandle)
7:dev_display(ImagePart)
8:
9:*获取图形的边界
10:threshold(ImagePart,Regions,0,112)
11:
12:*分离三角形和圆形
13:connection(Regions,ConnectedRegions)
14:sort_region(ConnectedRegions,SortedRegions,upper_left,true,column)
15:select_obj(SortedRegions,Circle,1)
16:select_obj(SortedRegions,Triangle,2)
17:
18:*获取三角形各边的信息
19:skeleton(Triangle,TriangleSkeleton)
20:gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,filter)
21:segment_contours_xld(TriangleContours,ContoursSplit,lines_circles,5,4,2)
22:select_contours_xld(ContoursSplit,SelectedContours,contour_length,100,999,-0.5,
0.5)
23:fit_line_contour_xld(SelectedContours,tukey,-1,10,5,2,RowBegin,ColBegin,RowEnd,ColEnd,Nr,Nc,Dist)
24:
25:*计算三角形角度
26:angle_ll(RowBegin[0],ColBegin[0],RowEnd[0],ColEnd[0],RowBegin[1],ColBegin[1],RowEnd[1],ColEnd[1],Angle1)
27:angle_ll(RowBegin[0],ColBegin[0],RowEnd[0],ColEnd[0],RowBegin[2],ColBegin[2],RowEnd[2],ColEnd[2],Angle2)
28:angle_ll(RowBegin[1],ColBegin[1],RowEnd[1],ColEnd[1],RowBegin[2],ColBegin[2],RowEnd[2],ColEnd[2],Angle3)
29:Angle1:=abs(deg(Angle1))
30:Angle2:=abs(deg(Angle2))
31:Angle3:=abs(deg(Angle3))
32:
33:*获取圆的信息
34:area_center(Circle,AreaCircle,RowCircle,ColumnCircle)35:
36:*计算圆心到三角形各边的距离37:Distance:=[]
38:forIndex:=0to2by1
39:distance_pl(RowCircle,ColumnCircle,RowBegin[Index],ColBegin[Index],RowEnd[Index],ColEnd[Index],ThisDistance)
40:Distance:=[Distance,ThisDistance]41:endfor