haclon模板匹配

* 打开窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

* 显示图像(用于创建模板的图像)
read_image (Image, 'D:/训练照片/4.png')
dev_display (Image)

* 在图像上手动绘制ROI,即选择绘制的模板区域
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)

* 将绘制的模板区域生成矩形
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)

* 提取出区域的图像,作为模板图像
reduce_domain (Image, Rectangle, ImageReduced1)

* 创建模板
create_shape_model (ImageReduced1, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

* 将创建的模板存成指定路径的文件
write_shape_model (ModelID, 'D:/训练照片/modle1.shm')

* 读取模板文件
read_shape_model ('D:/训练照片/modle1.shm', ModelID1)

* 在图像中查找模板,并返回模板的中心坐标
* 修改 NumMatches 参数为 10(可根据实际情况调整),以查找多个匹配结果
* 修改 MaxOverlap 参数为 0.1,减少重叠匹配结果的过滤
find_shape_model (Image, ModelID1, -0.39, 0.78, 0.5, 10, 0.1, 'least_squares', 0, 0.9, Row1, Column1, Angle1, Score1)

* 遍历所有匹配结果并绘制
for Index := 0 to |Row1| - 1 by 1
    * 在图像中显示模板
    dev_display_shape_matching_results (ModelID1, 'red', Row1[Index], Column1[Index], Angle1[Index], 1, 1, 0)
endfor

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

显示图像中心坐标

* 打开窗口
dev_open_window (0, 0, 712, 712, 'black', WindowHandle)

* 显示图像(用于创建模板的图像)
read_image (Image, 'D:/训练照片/1.png')
dev_display (Image)

* 在图像上手动绘制ROI,即选择绘制的模板区域
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)

* 将绘制的模板区域生成矩形
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)

* 提取出区域的图像,作为模板图像
reduce_domain (Image, Rectangle, ImageReduced1)

* 创建模板
create_shape_model (ImageReduced1, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)

* 将创建的模板存成指定路径的文件
write_shape_model (ModelID, 'D:/训练照片/modle1.shm')

* 读取模板文件
read_shape_model ('D:/训练照片/modle1.shm', ModelID1)

* 在图像中查找模板,并返回模板的中心坐标
* 修改 NumMatches 参数为 10(可根据实际情况调整),以查找多个匹配结果
* 修改 MaxOverlap 参数为 0.1,减少重叠匹配结果的过滤
find_shape_model (Image, ModelID1, -0.39, 0.78, 0.5, 10, 0.1, 'least_squares', 0, 0.9, Row, Column, Angle, Score)

* 打开文件准备写入结果
open_file('D:/训练照片/results.txt', 'output', FileHandle)
fwrite_string(FileHandle, '匹配结果数量: ' + |Row|)
fwrite_string(FileHandle, '各匹配结果的中心坐标:\n')
fwrite_string(FileHandle, '序号, X坐标, Y坐标\n')

* 遍历所有匹配结果并绘制
for Index := 0 to |Row| - 1 by 1
    * 在图像中显示模板
    dev_display_shape_matching_results (ModelID1, 'red', Row[Index], Column[Index], Angle[Index], 1, 1, 0)
    
    * 在匹配到的图像中心显示坐标
    * 格式化坐标文本
    Text := '中心坐标: (' + Column[Index]$'.1f' + ', ' + Row[Index]$'.1f' + ')'
    
    * 计算文本显示位置(稍微偏移以避免覆盖关键特征)
    TextRow := Row[Index] - 30
    TextColumn := Column[Index] - 60
    
    * 显示文本
    set_color (WindowHandle, 'green')
    set_tposition (WindowHandle, TextRow, TextColumn)
    write_string (WindowHandle, Text)
    
    * 在中心坐标画一个红色的点
    set_color(WindowHandle, 'red')
    gen_circle(Circle, Row[Index], Column[Index], 2)  // 半径为 2 的圆形代表点
    dev_display(Circle)
    
    * 将坐标写入文件
    fwrite_string(FileHandle, (Index+1)$'d' + ', ' + Column[Index]$'f' + ', ' + Row[Index]$'f' + '\n')
endfor

* 关闭文件
close_file(FileHandle)

* 显示匹配数量
set_color (WindowHandle, 'red')
set_tposition (WindowHandle, 20, 20)
write_string (WindowHandle, '找到 ' + |Row| + ' 个匹配结果')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值