0
点赞
收藏
分享

微信扫一扫

halcon模板匹配、由点生成线应用

心如止水_c736 2022-03-30 阅读 58
视觉检测

halcon模板匹配、由点生成线应用

1、图片链接:https://pan.baidu.com/s/1ZTenkUDgiDIBCYp-xFwV8A
提取码:4wv4
在这里插入图片描述
2、要求:
(1)利用果实和叶子制作模板并且定位(模板必须完整无分支干扰线);
(2)叶子和果实 重心通过仿射变换显示在logo上;
(3)计算叶子与果实重心连线基于模板重心的连线的角度;
3、代码实现:

dev_get_window (WindowHandle)

read_image (Image, './logo/1.jpg')
flag:=1
if(flag=0)
    draw_rectangle1(WindowHandle, Row1, Column1, Row2, Column2)
    gen_rectangle1 (ROI_0, Row1, Column1, Row2, Column2)
    reduce_domain (Image, ROI_0, ImageReduced)
    create_shape_model(ImageReduced, 'auto', 0, rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
    get_shape_model_contours(ModelContours, ModelID, 1)
    dev_display (Image)
    dev_set_draw('margin')
    write_shape_model(ModelID,'model2.shm')
    write_string(WindowHandle,'模板创建完毕!')
endif


if(flag=1)
    for  i:= 1 to 12 by 1
        read_image (Image1, './logo/'+i+'.jpg')
        read_shape_model('model2.shm', ModelID)
        get_shape_model_contours (ModelContours, ModelID, 1)
        find_shape_model(Image1, ModelID, 0, rad(360), 0.3, 1, 0.5, 'least_squares', 0, 0.1, Row, Column, Angle, Score)
        if(Score>0.4)
            vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)
            affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)
            gen_cross_contour_xld (Cross, Row, Column, 36, Angle)   
            scale_image (Image1, ImageScaled, 1.78322, -200)
            threshold (ImageScaled, Regions, 240, 255)
            connection (Regions, ConnectedRegions)
            *果实区域
            select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 67970.2, 1e+06)
            reduce_domain (ImageScaled, SelectedRegions, ImageReduced1)
            area_center (SelectedRegions, Area, Row1, Column1)
            gen_cross_contour_xld (Cross1, Row1, Column1, 36, Angle)
            *叶子区域         
            select_shape (ConnectedRegions, SelectedRegions1, ['area','circularity'], 'and', [19553.1,0.05092], [343575,0.5])
            area_center (SelectedRegions1, Area1, Row2, Column2)
            gen_cross_contour_xld (Cross2, Row2, Column2, 36, Angle)
            *果实中心点和叶子中心点的连线
            gen_region_line (RegionLines1, Row2, Column2, Row1, Column1)
            *
            gen_region_line (RegionLines2, Row2, Column2, Row, Column)            
            ********************************    
            dev_display (Image1)
            dev_set_color ('green')
            dev_display (ContoursAffinTrans)
            *模板匹配中心点
            dev_set_color ('green')
            dev_display (Cross)
            *果实区域中心点
            dev_set_color ('red')
            dev_display (Cross1)
            *叶子区域
            dev_set_color ('black')
            dev_display (Cross2)
            *
            dev_set_color ('red')
            dev_display (RegionLines1)
            dev_set_color ('green')
            dev_display (RegionLines2)
            ****
            disp_message (WindowHandle, 'OK', 'window', 12, 12, 'green', 'true')           
        else
            disp_message (WindowHandle, 'NG 模板匹配失败', 'window', 12, 12, 'red', 'true')          
        endif       
        clear_shape_model(ModelID)
        stop ()
    endfor  
endif




举报

相关推荐

0 条评论