halcon模板匹配

dev_update_window ('off')
dev_close_window ()
dev_open_window (0, 0, 728, 512, 'black', WindowID)
*制作模板
read_image (Image, 'C:/Users/admin/Desktop/图片/A ('+1+').tiff')
*draw_rectangle1 (WindowID, Row1, Column1, Row2, Column2)
*gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)

draw_circle (WindowID, Row, Column, Radius1)
*将绘制的模板区域生成矩形
gen_circle (Circle1, Row, Column, Radius1)
*提取出区域的图像,作为模板图像
reduce_domain (Image, Circle1, ImageReduced1)
*创建模板
create_shape_model (ImageReduced1, 'auto', 0, 20, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*将创建的模板存成指定路径的文件
write_shape_model (ModelID, 'C:/Users/admin/Desktop/图片//modle1.shm')

   
*匹配 
 read_image (Image1, 'C:/Users/admin/Desktop/图片/A ('+2+').tiff')
*读取模板文件
read_shape_model ('C:/Users/admin/Desktop/图片//modle1.shm', ModelID1)
*在图像中查找模板,并返回模板的中心坐标
find_shape_model (Image1, ModelID1, 0, 40, 0.5, 1, 0.5, 'least_squares', 0, 0.8, Row1, Column1, Angle1, Score1)

for Index := 0 to |Row1|-1 by 1
    disp_cross (3600, Row1[Index], Column1[Index], 100,0)
    disp_message(3600, '得分:'+Score1[Index], 'image', Row1[Index], Column1[Index], 'black', 'false')
    disp_message(3600, '角度:'+Angle1[Index], 'image', Row1[Index]+100, Column1[Index], 'black', 'false')
endfor
*释放句柄
clear_shape_model (ModelID)
stop ()

find_shape_model(Image, //搜索图像
ModelID, //模板句柄
AngleStart, // 搜索时的起始角度
AngleExtent, //搜索时的角度范围,必须与创建模板时的有交集
MinScore, //最小匹配值,输出的匹配的得分Score 大于该值
NumMatches, //定义要输出的匹配的最大个数
MaxOverlap, //当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出
SubPixel, //计算精度的设置,五种模式,多选2,3
NumLevels, //搜索时金字塔的层数
Greediness : //贪婪度,搜索启发式,一般都设为0.8,越高速度快,容易出现找不到的情况
Row,Column, Angle, Score) //输出匹配位置的行和列坐标、角度、得分。
halcon模板匹配_第1张图片

你可能感兴趣的:(halcon,c++)