跳到主要内容

cv - 图片多模板特征检测 (:cv_detect_templates)

声明

结果集合, 可视化图像 = 图片:cv_detect_templates(小图片模板集合及选项)

参数

  • 小图片模板集合及选项
    可选参数,表型,表内每个顺序元素都是一个图片对象,命名字段是选项

    选项字段
    {
    should_visualize = false | true, -- 可选字段,是否可视化输出,默认 false
    detector = 0 | 1 | 2, -- 可选字段,特征检测器,0: ORB, 1: SIFT, 2: SURF,默认 0: ORB
    score_thresh = number_value, -- 可选字段,百分制特征点匹配得分阈值,默认 90
    }

返回值

  • 结果集合
    表型,图片上检测到的模板特征的信息集合

    检测结果集合结构
    {
    { -- 结果 1
    { -- 结果 1 顶点 1
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 结果 1 顶点 2
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 结果 1 顶点 3
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 结果 1 顶点 4
    ["y"] = number_value,
    ["x"] = number_value,
    },
    confidence = number_value, -- 结果 1 所有特征点综合置信度
    angle = number_value, -- 旋转角度
    index = number_value, -- 匹配的模板在小图片模板集合中的索引
    },
    { -- 结果 2
    { -- 结果 2 顶点 1
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 结果 2 顶点 2
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 结果 2 顶点 3
    ["y"] = number_value,
    ["x"] = number_value,
    },
    { -- 结果 2 顶点 4
    ["y"] = number_value,
    ["x"] = number_value,
    },
    confidence = number_value, -- 结果 2 所有特征点综合置信度
    angle = number_value, -- 旋转角度
    index = number_value, -- 匹配的模板在小图片模板集合中的索引
    },
    ...
    }
  • 可视化图像
    图片对象,当 options.should_visualize 为 true 时,这个返回值是可视化返回值,它是个图片对象

说明

从图片中检测出小图片模板集合中的图片特征,可用于形变旋转后的特征检测
每个小图片模板只会匹配到分数超过 score_thresh 的最优结果
20250625 以上版本支持

注意

参数中的 score_thresh 与返回值中的 confidence 有区别
score_thresh 是用于筛选特征点,confidence 是模板所有特征点综合置信度

示例

local cv = require("image.cv")
local img1 = image.load_file(XXT_SCRIPTS_PATH..'/1.png')
local img2 = image.load_file(XXT_SCRIPTS_PATH..'/2.png')

local results, visimg = screen.image():cv_detect_templates({
img1, img2;
score_thresh = 90,
detector = 1, -- SIFT
should_visualize = true, -- 是否可视化输出,为 true 则第二个返回值是一张图片
})

nLog(results) -- 输出检测结果信息
dialog():add_image(visimg):show() -- 可视化查看检测结果图片