- dev_close_window ()
- read_image (Image, '../../Images/Demo.BMP')//读取图像
- rgb1_to_gray (Image, Image)
- get_image_size (Image, Width, Height)
- dev_open_window_fit_image(Image, 0,0,Width,Height,WND)
- dev_display (Image)
- *-------------------------------------------------
- dev_set_draw ('margin')//设置轮廓
- dev_set_line_width (3)//设置线宽
- ModelIds := []
- NumLevels := 4 //金字塔层数'auto'
- AngleStart := rad(-10) //识别起始角度
- AngleExten := rad(20) //识别角度范围
- AngleStep := 'auto' //角度步长
- Metric := 'ignore_global_polarity' //图像与模型是颠倒(反相)的,也能够被识别
- *-------------------------------------------------
- *模板1
- dev_set_color ('red')
- draw_rectangle1 (WND, Row11, Column11, Row12, Column12)
- gen_rectangle1 (Rectangle1, Row11, Column11, Row12, Column12)
- reduce_domain (Image, Rectangle1, ImageReduced1)//按区域缩小图像
- *创建NCC匹配模型
- create_ncc_model (ImageReduced1, NumLevels, AngleStart, AngleExten, AngleStep, Metric, ModelID)
- ModelIds := [ModelIds,ModelID]
- *-------------------------------------------------
- *模板2
- dev_set_color ('green')
- draw_rectangle1 (WND, Row21, Column21, Row22, Column22)
- gen_rectangle1 (Rectangle2, Row21, Column21, Row22, Column22)
- reduce_domain (Image, Rectangle2, ImageReduced2)//按区域缩小图像
- *创建NCC匹配模型
- create_ncc_model (ImageReduced2, NumLevels, AngleStart, AngleExten, AngleStep, Metric, ModelID)
- ModelIds := [ModelIds,ModelID]
- *-------------------------------------------------
- *模板3
- dev_set_color ('green')
- draw_rectangle1 (WND, Row31, Column31, Row32, Column32)
- gen_rectangle1 (Rectangle3, Row31, Column31, Row32, Column32)
- reduce_domain (Image, Rectangle3, ImageReduced3)//按区域缩小图像
- *创建NCC匹配模型
- create_ncc_model (ImageReduced3, NumLevels, AngleStart, AngleExten, AngleStep, Metric, ModelID)
- ModelIds := [ModelIds,ModelID]
- *-------------------------------------------------
- MinScore := 0.6 //最小匹配值
- NumMatches := 30 //[1,1,2] //最多可识别的数量
- MaxOverlap := 0 //遮盖系数
- NumLevels := 4 //金字塔层数
- tuple_length(ModelIds, lens)
- for i := 0 to lens-1 by 1
- set_ncc_model_param (ModelIds[i], 'timeout', 10000)//超时ms
- endfor
- *匹配图像目标
- count_seconds (Seconds1)
- find_ncc_models (Image, ModelIds, AngleStart, AngleExten, MinScore, NumMatches, MaxOverlap, 'true', NumLevels, Row, Column, Angle, Score, Model)
- count_seconds (Seconds2)
- *从点和角度方面计算一个严格的仿射变换
- *-------------------------------------------------
- dev_display (Image)//显示图像
- if (Score =[])
- disp_message (WND, '查找失败,没有找出目标 ', 'image', 12, 12, 'black', 'true')
- else
- dev_display (Image)//显示图像
- gen_cross_contour_xld (Cross, Row, Column, 16, Angle)
- disp_message (WND, '模版匹配值: '+ Score$'4.2f', 'image', 10, 12, 'red', 'true')
- endif
- disp_message (WND, '共耗时: ' + 1000*(Seconds2-Seconds1)+'ms', 'image', 10, 200, 'blue', 'true')
-
- stop()
- dev_clear_window()
- dev_display (Image)[/i]
复制代码 |