Halcon模板匹配

dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 612, 512, 'black', WindowHandle)

read_image (Image, 'E:/DeskTop/test/Pic_20250103105405046.bmp')

rgb1_to_gray (Image, GrayImage)
* 缺角圆
* gen_rectangle1 (ROI_0, 830.5, 515.5, 986.5, 669.5)
* 直角
* gen_rectangle1 (ROI_0, 624.5, 446.5, 838.5, 606.5)
* 半圆环
* gen_rectangle1 (ROI_0, 134.5, 776.5, 244.5, 930.5)
* 十字形
* gen_rectangle1 (ROI_0, 593.5, 776.5, 762.5, 924.5)
* 五边形
* gen_rectangle1 (ROI_0, 672.5, 1000.5, 822.5, 1162.5)
* 模板02


* gen_rectangle1 (ROI_0, 60.5, 323.5, 1076.5, 1357.5)
gen_rectangle1 (ROI_0, 769.5, 469.5, 1337.5, 1037.5)



reduce_domain (GrayImage, ROI_0, ImageReduced)
mean_image (ImageReduced, ImageMean, 5, 5)
* invert_image (ImageMean, ImageInvert)
threshold (ImageMean, Regions, 85, 255)
opening_circle (Regions, RegionOpening, 3.5)
connection (RegionOpening, ConnectedRegions)
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
dilation_circle (RegionOpening, RegionDilation, 3.5)
reduce_domain (Image, RegionDilation, ImageReduced1)
* 创建匹配模板
create_scaled_shape_model (ImageReduced1, 'auto', rad(0), rad(360), 'auto', 0.5, 1, 'auto', 'auto', 'ignore_local_polarity','auto', 'auto', ModelID)
* 获取模板轮廓
get_shape_model_contours (ModelContours, ModelID, 1)
area_center (RegionDilation, Area, Row, Column)
* 模板轮廓平移
vector_angle_to_rigid (0, 0, 0, Row, Column, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)

* 图片文件路径
list_files ('E:/DeskTop/test', ['files','follow_links'], ImageFiles)
* 筛选图片文件(bmp/jpg)
tuple_regexp_select (ImageFiles, ['\\.(bmp|jpg)$','ignore_case'], ImageFiles)
* 遍历文件
for Index := 0 to |ImageFiles| - 1 by 2
    read_image(image, ImageFiles[Index])  
    dev_display (image)
    * 查找匹配轮廓    
    find_scaled_shape_model (image, ModelID, rad(0), rad(360), 0.5, 1.2, 0.5, 0, 0.5, 'least_squares', 0, 0.9, Row2, Column2, Angle1, Scale1, Score1)
    stop ()
    * 遍历轮廓
    for i := 0 to |Score1|-1 by 1
        * 创建矩阵
        hom_mat2d_identity (HomMat2DIdentity)
        * 轮廓平移添加到矩阵
        hom_mat2d_translate (HomMat2DIdentity, Row2[i], Column2[i], HomMat2DTranslate)
        * 轮廓旋转添加到矩阵
        hom_mat2d_rotate (HomMat2DTranslate, Angle1[i], Row2[i], Column2[i], HomMat2DRotate)
        * 轮廓缩放添加到矩阵
        hom_mat2d_scale (HomMat2DRotate, Scale1[i], Scale1[i], Row2[i], Column2[i], HomMat2DScale)
        * 执行仿射变换
        affine_trans_contour_xld (ModelContours, ContoursAffineTrans1, HomMat2DScale)
        * 合并轮廓
        union2_closed_contours_xld (ContoursAffineTrans1, ContoursAffineTrans1, ContoursUnion)
        dev_set_line_width (3)
        dev_display (ContoursUnion)
        stop ()
    endfor
    
endfor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值