* 打开窗口
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| + ' 个匹配结果')