- * fuse.hdev: measuring the width of a fuse wire
- *
- dev_update_window ('off')
- dev_close_window ()
- * ****
- * step: acquire image
- * ****
- read_image (Fuse, 'fuse')
- get_image_size (Fuse, Width, Height)
- dev_open_window_fit_image (Fuse, 0, 0, Width, Height, WindowID)
- set_display_font (WindowID, 12, 'mono', 'true', 'false')
- dev_set_draw ('margin')
- dev_set_line_width (3)
- dev_display (Fuse)
- set_display_font (WindowID, 12, 'mono', 'true', 'false')
- disp_continue_message (WindowID, 'black', 'true')
- stop ()
- * ****
- * step: create measure object
- * ****
- * -> specify ROI
- Row := 297
- Column := 545
- Length1 := 80
- Length2 := 10
- Angle := rad(90)
- gen_rectangle2 (ROI, Row, Column, Angle, Length1, Length2)
- * -> create measure object
- gen_measure_rectangle2 (Row, Column, Angle, Length1, Length2, Width, Height, 'bilinear', MeasureHandle)
- dev_display (ROI)
- disp_continue_message (WindowID, 'black', 'true')
- stop ()
- * ****
- * step: measure
- * ****
- measure_pairs (Fuse, MeasureHandle, 1, 1, 'negative', 'all', RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
- disp_continue_message (WindowID, 'black', 'true')
- stop ()
- * ****
- * step: visualize results
- * ****
- for i := 0 to |RowEdgeFirst| - 1 by 1
- gen_contour_polygon_xld (EdgeFirst, [-sin(Angle + rad(90)) * Length2 + RowEdgeFirst[i],-sin(Angle - rad(90)) * Length2 + RowEdgeFirst[i]], [cos(Angle + rad(90)) * Length2 + ColumnEdgeFirst[i],cos(Angle - rad(90)) * Length2 + ColumnEdgeFirst[i]])
- gen_contour_polygon_xld (EdgeSecond, [-sin(Angle + rad(90)) * Length2 + RowEdgeSecond[i],-sin(Angle - rad(90)) * Length2 + RowEdgeSecond[i]], [cos(Angle + rad(90)) * Length2 + ColumnEdgeSecond[i],cos(Angle - rad(90)) * Length2 + ColumnEdgeSecond[i]])
- dev_set_color ('cyan')
- dev_display (EdgeFirst)
- dev_set_color ('magenta')
- dev_display (EdgeSecond)
- dev_set_color ('blue')
- if (i == 0)
- set_tposition (WindowID, RowEdgeFirst[i] + 5, ColumnEdgeFirst[i] + 20)
- else
- set_tposition (WindowID, RowEdgeFirst[i] - 40, ColumnEdgeFirst[i] + 20)
- endif
- write_string (WindowID, 'width: ' + IntraDistance[i] + ' pix')
- endfor
- disp_continue_message (WindowID, 'black', 'true')
- stop ()
- * ****
- * step: destroy measure object
- * ****
- close_measure (MeasureHandle)
- dev_update_window ('on')
- dev_clear_window ()
复制代码
这个官方例程:求解
- gen_contour_polygon_xld (EdgeFirst, [-sin(Angle + rad(90)) * Length2 + RowEdgeFirst,-sin(Angle - rad(90)) * Length2 + RowEdgeFirst], [cos(Angle + rad(90)) * Length2 + ColumnEdgeFirst,cos(Angle - rad(90)) * Length2 + ColumnEdgeFirst])
- gen_contour_polygon_xld (EdgeSecond, [-sin(Angle + rad(90)) * Length2 + RowEdgeSecond,-sin(Angle - rad(90)) * Length2 + RowEdgeSecond], [cos(Angle + rad(90)) * Length2 + ColumnEdgeSecond,cos(Angle - rad(90)) * Length2 + ColumnEdgeSecond])
复制代码 |