halcon例程 -- 逐字细究(四)

* Searching the best matching of a template and an image

dev_close_window ()
*关闭当前窗体
read_image (Image1, 'passat/passat_00')
*读取图像
get_image_size (Image1, Width, Height)
*获取当前图像大小尺寸
dev_open_window (0, 0, Width, Height, 'black', WindowID)
*打开一个设定好大小尺寸的窗口,背景为黑色
* Interpolate 2 video half images
fill_interlace (Image1, Image1Filled, 'odd')
**插补两个对半视频图像
*ImageCamera 输入两个半视频图像
*ImageFilled 输入内值查补后的完整图像
*Mode 查补类型 默认为:'odd'
Row := 201
Column := 472
gen_rectangle1 (Rectangle, Row - 12, Column - 8, Row + 12, Column + 8)
*创建一个平行于坐标轴的矩形区域
reduce_domain (Image1Filled, Rectangle, ImageReduced)
*缩小一个图像的区域,以Rectangle区域大小显示,新图像尺寸大小并未发化变化 
* Preparing a pattern for template matching
create_template (ImageReduced, 5, 1, 'none', 'original', TemplateID)
**为模型匹配准备一个格式
*Template 输出需要匹配的图像
*FirstError 该参数尚未使用,默认: 255
*NumLevel 最大的金字塔层数
*Optimize 是否优化 默认:'sort'
*GrayValues 增强原始灰度值,默认: 'orginal'
*TemplateID 输出匹配模型的句柄
dev_update_window ('off')
*关闭窗口的更新
dev_update_var ('off')
**更新变量
*DisplayMode 图像输出模式,默认:'off'
dev_set_color ('red')
*设置一个颜色在某个区域,图形或XLD显示
dev_set_draw ('margin')
*设置一个区域的有效填充模式
dev_set_line_width (3)
*设置一个区域的轮廓的线宽
Files := []
* Get list of file names
for i := 1 to 40 by 1
    File := 'passat/passat_' + (round(i)$'.2')
    Files := [Files,File]
endfor
read_image (Images, Files)
*批量读取图像
fill_interlace (Images, ImageFilled, 'odd')
*插补两个对半视频图像
dev_update_pc ('off')
**更新程序计数器
*DisplayMode 为运行事件模态 ,默认: 'off'
for i := 1 to 40 by 1
    select_obj (ImageFilled, Image1, i)
    **从一个目标元组里面选择一个目标
    *Objects 输入目标元组
    *ObjectSelected 输出选择的目标元组(索引部分的内容)
    *Index 输入索引值 范围:Index >= 1
    dev_display (Image1)
    *显示图像 
    gen_rectangle1 (RearchRectangle, Row - 50, Column - 90, Row + 50, Column + 90)
    *创建一个平行于坐标轴的矩形区域
    reduce_domain (Image1, RearchRectangle, ImageSearch)
    *缩小一个图像的区域,以Rectangle区域大小显示,新图像尺寸大小并未发化变化 
    best_match (ImageSearch, TemplateID, 30, 'false', RowNew, ColumnNew, Error)
    **寻找一个模型和一个图像的最佳匹配
    *Image 输入能够匹配的图像
    *TemplateID 输入需要匹配的模型句柄
    *MaxError 输入两者之间的最大平均灰度偏差 默认: 20 [0,255]
    *SubPixel 是否需要通过次图素来进行精确定位 默认:'false'
    *Row 输出目标对象的y值原点坐标
    *Column 输出目标对象的x值原点坐标
    *Error 输出两者之间的平均灰度偏差值
    if (Error < 255)
        disp_rectangle1 (WindowID, Row - 12, Column - 8, Row + 12, Column + 8)
        **显示水平矩形
        *WindowHandle 输入窗口的句柄
        *Row1 输入水平矩形起点的y值坐标 [0,511]
        *Column1 输入水平矩形起点的x值坐标 [0,511]
        *Row2 输入水平矩形终点的y值坐标 [0,511]
        *Column2 输入水平矩形终点的x值坐标 [0,511]
        Row := RowNew
        Column := ColumnNew
    endif
endfor
clear_template (TemplateID)
**回收一个模型的内存
*TemplateID 输入需要匹配模型的句柄
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值