运行程序前先创建ROI以创建模板,然后顺时针或者逆时针绘制三根直线,以确定找线的方向与距离。
由于找线的时候是模板跟随的,最后得到下面的结果:
代码如下:
其中draw_rake,dev_display_shape_matching_result,rake,pts_to_best_line为外部算子。
有需要的朋友可以找勇哥索取。
dev_close_window ( ) read_image (Image, 'C:/Users/Administrator/Desktop/罗伟/ttt4.bmp') scale_image (Image, ImageScaled1, 1.81, 0) dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) gen_rectangle1 (Rectangle, 1247, 1182, 1632, 1842) area_center (Rectangle, Area, Row3, Column3) reduce_domain (ImageScaled1, Rectangle, ImageReduced) *stop() create_shape_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID) draw_rake (Regions, WindowHandle,30, 160, 15, Row1First, Column1First, Row2First, Column2First) draw_rake (Regions2, WindowHandle, 30, 160, 15, Row1Secound, Column1Secound, Row2Secound, Column2Secound) draw_rake (Regions3, WindowHandle, 30, 160, 15, Row1thress, Column1thress, Row2thress, Column2thress) find_shape_model (Image, ModelID, rad(0), rad(360), 0.5, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) stop() gen_empty_obj(EmptyObject) for Index := 0 to |Row|-1 by 1 dev_display_shape_matching_results (ModelID, 'red', Row[Index], Column[Index], Angle[Index], 1, 1, 0) vector_angle_to_rigid ( Row3, Column3, 0, Row[Index], Column[Index], Angle[Index], HomMat2D) affine_trans_pixel (HomMat2D, Row1First, Column1First, RowTrans, ColTrans) affine_trans_pixel (HomMat2D, Row2First, Column2First, RowTrans1, ColTrans1) rake (ImageScaled1, Regions1, 5, 20, 1, 1, 20, 'all', 'max', RowTrans, ColTrans, RowTrans1, ColTrans1, ResultRow, ResultColumn) pts_to_best_line (LineFirst, ResultRow, ResultColumn, 2, Row12, Column12, Row22, Column22) affine_trans_pixel (HomMat2D, Row1Secound, Column1Secound, RowTrans2, ColTrans2) affine_trans_pixel (HomMat2D, Row2Secound, Column2Secound, RowTrans3, ColTrans3) rake (ImageScaled1, Regions4, 5, 20, 1, 1, 20, 'all', 'max', RowTrans2, ColTrans2, RowTrans3, ColTrans3, ResultRow1, ResultColumn1) pts_to_best_line (LineSecound, ResultRow1, ResultColumn1, 2, Row1, Column1, Row2, Column2) affine_trans_pixel (HomMat2D, Row1thress, Column1thress, RowTrans4, ColTrans4) affine_trans_pixel (HomMat2D, Row2thress, Column2thress, RowTrans5, ColTrans5) rake (ImageReduced, Regions5, 5, 20, 1, 1, 20, 'all', 'max',RowTrans4, ColTrans4,RowTrans5, ColTrans5, ResultRow2, ResultColumn2) pts_to_best_line (Linethress, ResultRow2, ResultColumn2, 2, Row11, Column11, Row21, Column21) intersection_ll (Row1, Column1, Row2, Column2, Row12, Column12, Row22, Column22, Row4, Column4, IsParallel) gen_cross_contour_xld (Cross, Row4, Column4, 16, Angle) intersection_ll (Row11, Column11, Row21, Column21, Row12, Column12, Row22, Column22, Row5, Column5, IsParallel1) gen_cross_contour_xld (Cross1, Row5, Column5, 16, Angle) ROIRow:=(Row5+Row4)/2 ROICol:=(Column5+Column4)/2 gen_cross_contour_xld (Cross2, ROIRow, ROICol, 16, Angle) dev_display (Image) concat_obj(EmptyObject, LineFirst, EmptyObject) concat_obj(EmptyObject, LineSecound, EmptyObject) concat_obj(EmptyObject, Linethress, EmptyObject) concat_obj(EmptyObject, Cross, EmptyObject) concat_obj(EmptyObject, Cross1, EmptyObject) concat_obj(EmptyObject, Cross2, EmptyObject) dev_display (LineFirst) dev_display (LineSecound) * dev_display (Linethress) dev_display (Cross) dev_display (Cross1) dev_display (Cross2) *stop () endfor dev_display(EmptyObject)
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:


