跳至主要內容

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() -- 可視化查看檢測結果圖片